【MATLAB】contour函数的使用(绘制等高线的深入讲解) 您所在的位置:网站首页 函数的函数值 【MATLAB】contour函数的使用(绘制等高线的深入讲解)

【MATLAB】contour函数的使用(绘制等高线的深入讲解)

2024-07-11 07:04| 来源: 网络整理| 查看: 265

1 .语法:  contour(Z)  contour(X,Y,Z)  contour(___,levels)

2.说明:  1.contour(Z) 创建一个包含矩阵 Z 的等值线的等高线图,   其中 Z 包含 x-y 平面上的高度值。   MATLAB® 会自动选择要显示的等高线。   Z 的行索引和列索引分别是平面中的 x 和 y 坐标。  2.contour(X,Y,Z) 指定 Z 中各值的 x 和 y 坐标。   3 .示例:

x = -6:1:6; y = -5:1:5; [X,Y] = meshgrid(x,y) Z=X.^2+Y.^2 %点乘代表对应为相乘,数组乘法而不是矩阵乘法 %每一行代表x的一个副本,length(y) x legnth(x) X = -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 %每一列代表y的一个副本,length(y) x legnth(x) Y = -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 Z = 61 50 41 34 29 26 25 26 29 34 41 50 61 52 41 32 25 20 17 16 17 20 25 32 41 52 45 34 25 18 13 10 9 10 13 18 25 34 45 40 29 20 13 8 5 4 5 8 13 20 29 40 37 26 17 10 5 2 1 2 5 10 17 26 37 36 25 16 9 4 1 0 1 4 9 16 25 36 37 26 17 10 5 2 1 2 5 10 17 26 37 40 29 20 13 8 5 4 5 8 13 20 29 40 45 34 25 18 13 10 9 10 13 18 25 34 45 52 41 32 25 20 17 16 17 20 25 32 41 52 61 50 41 34 29 26 25 26 29 34 41 50 61

在这里插入图片描述

x =0:1:6; y = 0:1:5; [X,Y] = meshgrid(x,y) Z=X.^2+Y.^2 contour(X,Y,Z);

在这里插入图片描述 想要出来完整的圆形的等高线,需要坐标是对称的,否则出来的图将不完整

上面的图 我们是把x,y用meshgrid函数转换为网格矩阵,然后画图,思考能不能用for循环的形式?如何完成两者的相互转换?

x =-6:1:6; y = -6:1:6; for i=1:length(x) for j=1:length(y) m=x(i); n=y(j); z(i,j)=m.^2+n.^2; end end contour(x,y,z);

在这里插入图片描述 如果采用for循环的形式,有一点需要注意,就是length(x)和length(y)一定要相等。

如果用三层for循环,如何求x^2+y^2+z^2并画出等高线图呢?

x =-6:1:6; y = -6:1:6; z = -6:1:6; for i=1:length(x) for j=1:length(y) for k=1:length(z) m=x(i); n=y(j); l=z(k); c(i,j)=m.^2+n.^2+l.^2; end end end contour(x,y,c);

在这里插入图片描述 思考一下能不能改成用meshgrid函数来做?不可以

x =-6:1:6; y = -6:1:6; z = -6:1:6; [X,Y,Z]=meshgrid(x,y,z); c=X.^2+Y.^2+Z.^2 contour(X,Y,c);

看一下工作区变量:

>> whos Name Size Bytes Class Attributes X 13x13x13 17576 double Y 13x13x13 17576 double Z 13x13x13 17576 double c 13x13x13 17576 double x 1x13 104 double y 1x13 104 double z 1x13 104 double

由工作区变量可以看出,不能画出等高线图,所以如果想使用三维循环变量就使用for循环,并且要保证每个循环变来量的长度相同。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有