直接使用contourf,需要有[X,Y] = meshgrid(x,y), 并用Z=f(X,Y)来生成Z轴。但是如果一开始Z轴坐标就不是x,y用函数生成的,而是有个默认的测试数据,又该如何用来画MAP图呢?
clc;clear;clf;
data_ECO= []; //具体数值可以自己填,此处为转速,转矩,效率的N行三列矩阵。
SPD_ECO = data_ECO(:,1)';
TRQ_ECO = data_ECO(:,2)';
EFF_ECO = data_ECO(:,3)';
%num_levels = 15; % 例如设置15个等高线级别
%v = linspace(min(EFF_ECO), max(EFF_ECO), num_levels);//此处将这两行屏蔽,因为实际使用不如直接在clabel中指定[60,65,75,80,90,95]看起来效果好。
[X, Y] = meshgrid(min(SPD_ECO):1:max(SPD_ECO), min(TRQ_ECO):1:max(TRQ_ECO)); //也有将坐标间隔定的更小,例如0.1的,但是此处我尝试了0.1,0.2,0.5,发现因为我数据量较小,区别不大,遂选1。
% 使用griddata插值C到网格上
Z = griddata(SPD_ECO, TRQ_ECO, EFF_ECO, X, Y, 'natural'); //这里参数可以选择'natural','cubic','linear'等
% 使用contourf绘制等高线填充图
[ContourMatrix, hContour] = contourf(X, Y, Z);
hColorbar = colorbar;
caxis([min(EFF_ECO) max(EFF_ECO)]); % 设置颜色条的范围,比如0到100
clabel(ContourMatrix, hContour, [65,70,75,80,85,90,95], 'Color', 'k');
colormap(jet); % 或者可以选择其他颜色映射
xlabel('Speed (rpm)');
ylabel('Shifting Torque (Nm)');
title('Efficiency Map of economic model');
axis tight; % 使轴紧密地围绕数据
外特性曲线,对于电机而言,是恒定转速下的最大转矩值形成的曲线。
绘制MAP图时,以转速为横轴,以转矩为纵轴,则第一象限是电机正转驱动效率图,第四象限是电机正转时的发电效率MAP图,第二象限是电机反转时的发电效率MAP图,第三象限是电机反转时的驱动效率MAP图。即转矩、转速一致,为驱动状态,转矩转速相反为发电(能量回收)状态。
interp1
griddata
find ,替换值
图中放置文本
% 获取当前坐标轴的范围
ax = gca;
xlim = ax.XLim;
ylim = ax.YLim;
% 计算右上角的位置
xpos = xlim(2) - 0.1 * (xlim(2) - xlim(1)); % 在x轴方向留出一些空间
ypos = ylim(2) - 0.1 * (ylim(2) - ylim(1)); % 在y轴方向留出一些空间
% 在右上角添加文本
text(xpos, ypos, ‘这是右上角的文本’, ‘HorizontalAlignment’, ‘right’, ‘VerticalAlignment’, ‘top’);