如何用 matlab 绘制电机效率 map 图或发动机万有特性曲线
前段时间写论文,需要绘制电机效率 map 图,其实和发动机万有特性曲线
一样。。
看了好多资料都不会,问问师兄也没具体画过。。困惑中查到貌似有几个软
件可以画 map 图,由于我比较熟悉 matlab,就选用它了,可是 matlab 也不知道
咋画呀,我查看了 matlab 图形处理这一块,突然发现等高线图绘制,咦???
这不就是高中地理学的吗???和 map 图万有特性图本质一样吗???就是
contour 函数啦,惊喜万分
5.2.13 等值线图
等值线图可用于绘制地理数据中的等高图、气象数据中的等势图等。等值线图在二维图形中
把第三维中相同大小的数据连接为等值线,一定程度上可以表示第三维的信息,同时等值线
图相比三维图更容易观察数据之间的关系,被广泛的应用于各个领域。
MATLAB 中提供了一系列的函数用于绘制不同形式的等高线图,其中包括:
1.contour()函数
contour()函数可用于绘制二维等值线图,函数的调用格式为:
contour(z):输入数据 z 为二维矩阵,绘制数据 z 的等值线,绘图时等值线的数量和
数值根据矩阵 z 的数据范围自动确定。
contour(z,n):绘制等值线图,设置等值线数目为 n。
contour(z,v):绘制等值线图,向量 v 设置等值线的数值。
contour(x,y,z):绘制矩阵 z 的等值线图,输入参数 x、y 用于指定绘制的等值线图的
坐标轴数据,同时输入数据 x、y、z 必须为大小相等的矩阵。
contour(x,y,z,n):为指定坐标轴的等值线图设置等值线的数目 n。
contour(x,y,z,v):为指定坐标轴的等值线图设置等值线的数值 v。
contour(...,LineSpec):输入参数 LineSpec 用于设置等值线的线型。
[c,h] = contour(...):返回 contour()函数绘制的等高线图中的等值线的数值标签 c 和包
含所有图形对象的句柄 h;
2.contourf()函数
contourf()函数用于绘制带填充的二维等值线图。即在 contour()函数绘制的等值线图上,将相
邻的等值线之间用同一种颜色填充,不相邻的等值线之间填充有不同的颜色,填充用的颜色
决定于当前的色图颜色。函数 contourf()的调用格式同 contour()。
3.clabel()函数
clabel(c,h):在句柄 h 指定的等值线图上的等值线上添加数据标签 c。
clabel(c,h,v):在指定的等值线值 v 上显示数据标签 c。
clabel(c,h,'manual'):手动方式设置等值线的数据标签。当运行该命令后,等值线图
中将出现十字连线,用户用鼠标左键或空格键在最接近指定位置上放置数据标签,
回车键结束该操作。
clabel(c):在当前的等值线图上添加数据标签 c。
clabel(c,v):在当前的等值线图上添加数据标签 c,并指定数据标签所加的等值线值
v。
clabel(c,'manual'):用户手动方式为当前等值线图添加数据标签。
另外,函数 ezcontour()和 ezcontourf()可以直接绘制函数表达式的等值线图,感兴趣的读者可
以查阅 MATLAB 的相关帮助文档。红字是我自己的数据。。
[c,h]=contour(speed,torque,efficient,28)
clabel(c,h,[92.046,91.115,90.184,89.253,88.322,86.460,84.598,81.806,80.874,74.356,70.632])
x=500:5:2000;
y=172;
hold on
plot(x,y)
x1=2000:5:6000;y1=0.000002708*x1.^2-0.04766*x1+256.488;
Hold on
Plot(x1,y1)
title('电机效率 map 图(%)')
%函数 peaks 用于生成图形绘制的示例数据
%生成数据矩阵 z 的不带填充的二维等值线图
%为二维等值线图添加数据标签
%添加等值线图的颜色条
【例 5.32】等值线图的绘制。
z=peaks;
[c,h] = contour(z);
title('一般二维等值线图的绘制')
clabel(c,h);
colorbar
title('一般二维等值线图的绘制(添加数据标签)')
figure;
v=[min(z(:)):2:max(z(:))];
[c,h] = contourf(z,v);
clabel(c,h);
colorbar
title('带填充的二维等值线图的绘制')
figure;
[c,h] = contourf(z,5);
title('二维等值线图手动添加等值线标签')
clabel(c,h,'manual');
%绘制带填充的二维等值线图,并设置等值线向量 v
%为二维等值线图添加数据标签
%添加等值线图的颜色条
%绘制带填充的二维等值线图,并设置等值线条数为 5
%为二维等值线图手动添加数据标签
运行上述程序,显示如图 5.44 所示的图形。
图 5.44(a) 等值线图的绘制
图 5.44(b) 等值线图的绘制
图 5.44(c) 等值线图的绘制
图 5.44(d) 等值线图的绘制
看到等值线图是不是很惊喜????
我们再画 map 图时,需要定义等维数 3 个矩阵,
speed=[ ];
torque=[];
efficient[];
[c,h]=contour(speed,torque,efficient,28);//因为我发现 28 比较好看。。
clabel(c,h,[92.046,91.115,90.184,89.253,88.322,86.460,84.598,81.806,80.874,74.356,70.632])
后面就是细节啦。。下面是没经过处理的结果