MAP_Plot

clear
com.mathworks.mlservices.MLCommandHistoryServices.removeAll
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%此处粘贴数据至少要包含:给定转速,实测转速,实测转矩,实测功率,系统效率,电机效率,控制器效率; (注:去零飘后)
Test_data;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
speed =abs(test_data(1:end,1)); %实测转速所在列
speed_order=abs(test_data(1:end,2)); %转速指令所在列
torque=abs(test_data(1:end,3)); %实测转矩所在列
power=abs(test_data(1:end,4)); %实测功率所在列
efficient_sys=abs(test_data(1:end,5)); %系统效率所在列
efficient_tm=abs(test_data(1:end,6)); %电机效率所在列
efficient_tmi=abs(test_data(1:end,7)); %控制器效率所在列

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[xx,yy] = meshgrid( 0:30:max(speed)+300,0:5:250); %坐标值细分
zz1 = griddata(speed,torque,efficient_tmi,xx,yy,'cubic');
zz2 = griddata(speed,torque,efficient_tm,xx,yy,'cubic');
zz3 = griddata(speed,torque,efficient_sys,xx,yy,'cubic');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

speed_base=0:30:max(speed); %坐标值细分
torque_y=250; %外特性转矩轴最大值 320
torque_step=30; %外特性转矩轴分度
power_y=100; %外特性功率轴最大值 160
power_step=10; %外特性功率轴分度
compare=0; %是否添加对比曲线
torque_max=210; %技术要求的最大转矩
power_max=95; %技术要求的最大功率

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

str1='EI07'; %内部项目号
str2='3in1系统'; %样品信息,最好是一个包含客户名称、客户项目号及永久标识的短语,如“江淮IEV6S(TM15C15002PCU15C16002)”
str3='334V'; %测试电压
str4='前进电动工作模式'; %电动或者发电工作模式

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

speed_num=1;
speed_kinds(1)=speed_order(1); %第一个给定转速值
j=1;
torque_matrix(1,1)=torque(1); %第一个扭矩值
power_matrix(1,1)=power(1); %第一个功率值
for i=2:1:length(speed_order) %从第二个开始,都是给定转速,有几个转速给定点,长度就是几
if speed_order(i)~=speed_order(i-1) %相同给定转速有多个点,对应一个转速
speed_num=speed_num+1;
speed_kinds(speed_num)=speed_order(i); %寻找有几个不同的转速点
j=1;
torque_matrix(j,speed_num)=torque(i); %
power_matrix(j,speed_num)=power(i);
speed_matrix(j,speed_num)=speed(i);
end
if speed_order(i)==speed_order(i-1)
torque_matrix(j+1,speed_num)=torque(i);
power_matrix(j+1,speed_num)=power(i);
speed_matrix(j+1,speed_num)=speed(i);
j=j+1;
end
end
for i=1:1:speed_num
torque_maxs(i)=max(torque_matrix(1:end,i));
power_maxs(i)=max(power_matrix(1:end,i));
speed_maxs(i)=max(speed_matrix(1:end,i));
end
torque_ec=interp1(speed_maxs,torque_maxs,speed_base,'cubic');
power_ec=interp1(speed_maxs,power_maxs,speed_base,'cubic');

speed_turn=power_max9550/torque_max;
torque_perfet=zeros(length(speed_base));
speed_perfet=zeros(length(speed_base));
for i=1:length(speed_base)
if speed_base(i)<speed_turn
torque_perfect(i)=torque_max;
power_perfect(i)=speed_base(i)
torque_max/9550;
end
if speed_base(i)>=speed_turn
torque_perfect(i)=power_max9550/speed_base(i);
power_perfect(i)=power_max;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
trq_max_coord(1:size(yy,2),1)=1;
trq_max_serial=interp1(speed_maxs,torque_maxs,0:30:max(speed)+300);
for i=1:size(xx,2)
for n=1:size(xx,1)
if trq_max_serial(i)<=yy(n,i)
trq_max_coord(i)=n;
break %%%%%%%%%%%%去除插值新增的点
end
end
end
for i=1:size(trq_max_coord,2)
if trq_max_coord(i)==0
trq_max_coord(i)=1;
end
end
for i=1:size(xx,2)
zz1(trq_max_coord(i):end,i)=NaN;
zz2(trq_max_coord(i):end,i)=NaN;
zz3(trq_max_coord(i):end,i)=NaN;
end
zz11=zz1(:);
zz11(isnan(zz11))=[];
zz22=zz2(:);
zz22(isnan(zz22))=[];
zz33=zz3(:);
zz33(isnan(zz33))=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[maxsys,sign3]=max(efficient_sys);
[maxtm,sign2]=max(efficient_tm);
[maxtmi,sign1]=max(efficient_tmi);
max_sys=fix(maxsys
10)/10;
max_tm=fix(maxtm10)/10;
max_tmi=fix(maxtmi
10)/10;
num_all_1=length(zz11);
num_all_2=length(zz22);
num_all_3=length(zz33);
num_1_80=0;
num_1_85=0;
num_1_90=0;
num_2_80=0;
num_2_85=0;
num_2_90=0;
num_3_80=0;
num_3_85=0;
num_3_90=0;
for i=1:1:num_all_1
if zz11(i)>80
num_1_80=num_1_80+1;
end
if zz11(i)>85
num_1_85=num_1_85+1;
end
if zz11(i)>90
num_1_90=num_1_90+1;
end
end
for i=1:1:num_all_2
if zz22(i)>80
num_2_80=num_2_80+1;
end
if zz22(i)>85
num_2_85=num_2_85+1;
end
if zz22(i)>90
num_2_90=num_2_90+1;
end
end
for i=1:1:num_all_3
if zz33(i)>80
num_3_80=num_3_80+1;
end
if zz33(i)>85
num_3_85=num_3_85+1;
end
if zz33(i)>90
num_3_90=num_3_90+1;
end
end
eff80_1=num_1_80/num_all_1100;
eff85_1=num_1_85/num_all_1
100;
eff90_1=num_1_90/num_all_1100;
eff80_2=num_2_80/num_all_2
100;
eff85_2=num_2_85/num_all_2100;
eff90_2=num_2_90/num_all_2
100;
eff80_3=num_3_80/num_all_3100;
eff85_3=num_3_85/num_all_3
100;
eff90_3=num_3_90/num_all_3*100;
str_sum1_1=strcat(str1,'-',str2,'-',str3,'-',str4,'-','控制器效率');
str_sum1_2=strcat('最高效率点:',num2str(maxtmi),'%','@',num2str(speed(sign1)),'rpm',num2str(torque(sign1)),'Nm');
str_sum1_3=strcat('效率大于80%占比:',num2str(eff80_1),'%','效率大于85%占比:',num2str(eff85_1),'%','效率大于90%占比:',num2str(eff90_1),'%');
str_sum1=strvcat(str_sum1_1,str_sum1_2,str_sum1_3);
str_sum2_1=strcat(str1,'-',str2,'-',str3,'-',str4,'-','电机效率');
str_sum2_2=strcat('最高效率点:',num2str(maxtm),'%','@',num2str(speed(sign2)),'rpm',num2str(torque(sign2)),'Nm');
str_sum2_3=strcat('效率大于80%占比:',num2str(eff80_2),'%','效率大于85%占比:',num2str(eff85_2),'%','效率大于90%占比:',num2str(eff90_2),'%');
str_sum2=strvcat(str_sum2_1,str_sum2_2,str_sum2_3);
str_sum3_1=strcat(str1,'-',str2,'-',str3,'-',str4,'-','系统效率');
str_sum3_2=strcat('最高效率点:',num2str(maxsys),'%','@',num2str(speed(sign3)),'rpm',num2str(torque(sign3)),'Nm');
str_sum3_3=strcat('效率大于80%占比:',num2str(eff80_3),'%','效率大于85%占比:',num2str(eff85_3),'%','效率大于90%占比:',num2str(eff90_3),'%');
str_sum3=strvcat(str_sum3_1,str_sum3_2,str_sum3_3);
str_sum4=strcat(str1,'-',str2,'-',str3,'-',str4,'-','外特性曲线');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
set(gcf,'Position',[120,100,685,450],'color','w');
set(gca,'Position',[0.085,0.095,0.880,0.766]);
surf(xx,yy,zz1);
T=[10:10:50,55:5:60,62:2:80,80:1:85,85:0.5:100,max_tmi];
[C,h]=contour(xx,yy,zz1,T);
p=clabel(C,h);
for n=p'
set(n,'string',sprintf('%.1f',get(n,'userdata')))
end
hold on;
FF1=plot(0:30:max(speed)+300,trq_max_serial);
set(FF1,'color','r');
set(FF1,'LineWidth',1.5)
title(str_sum1);
xlabel('转速 rpm');
ylabel('扭矩 NM');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(2)
set(gcf,'Position',[120,100,685,450],'color','w');
set(gca,'Position',[0.085,0.095,0.880,0.766]);
surf(xx,yy,zz2);
T=[10:10:50,55:5:60,62:2:80,80:1:85,85:0.5:100,max_tm];
[C,h]=contour(xx,yy,zz2,T);
p=clabel(C,h);
for n=p'
set(n,'string',sprintf('%.1f',get(n,'userdata')))
end
hold on;
FF2=plot(0:30:max(speed)+300,trq_max_serial);
set(FF2,'color','r');
set(FF2,'LineWidth',1.5)
title(str_sum2);
xlabel('转速 rpm');
ylabel('扭矩 NM');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(3)
set(gcf,'Position',[120,100,685,450],'color','w');
set(gca,'Position',[0.085,0.095,0.880,0.766]);
surf(xx,yy,zz3);
T=[10:10:50,55:5:60,62:2:80,80:1:85,85:0.5:100,max_sys];
[C,h]=contour(xx,yy,zz3,T);
p=clabel(C,h);
for n=p'
set(n,'string',sprintf('%.1f',get(n,'userdata')))
end
hold on;
FF3=plot(0:30:max(speed)+300,trq_max_serial);
set(FF3,'color','r');
set(FF3,'LineWidth',1.5)
title(str_sum3);
xlabel('转速 rpm');
ylabel('扭矩 NM');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(4)
hold on;
set(gcf,'Position',[120,100,685,450],'color','w');
set(gca,'Position',[0.085,0.095,0.830,0.845]);

if compare==1
[AY,H3,H4] = plotyy(speed_base,torque_perfect,speed_base,power_perfect,'plot');
set(AY(1),'YLim',[0,torque_y],'YTick',[0:torque_step:torque_y]);
set(AY(2),'YLim',[0,power_y],'YTick',[0:power_step:power_y]);
set(H3,'LineStyle','-');
set(H3,'LineWidth',3)
set(H3,'color','g');
set(H4,'LineStyle','-');
set(H4,'color','g');
set(H4,'LineWidth',3);
end

[AX,H1,H2] = plotyy(speed_base,torque_ec,speed_base,power_ec,'plot');
set(AX(1),'XColor','k','YColor','b');
set(AX(2),'XColor','k','YColor','r');
HH1=get(AX(1),'Ylabel');
set(AX(1),'YLim',[0,torque_y],'YTick',[0:torque_step:torque_y]);
set(AX(2),'YLim',[0,power_y],'YTick',[0:power_step:power_y]);
grid on
set(HH1,'String','转矩(Nm)');
set(HH1,'color','b');
HH2=get(AX(2),'Ylabel');
set(HH2,'String','功率(kw)');
set(HH2,'color','r');
set(H1,'LineStyle','-');
set(H1,'LineWidth',2)
set(H1,'color','b');
set(H2,'LineStyle','-');
set(H2,'color','r');
set(H2,'LineWidth',2);
if compare==1
legend([H1,H2,H3],{'转矩';'功率';'要求外特性'},0);
else
legend([H1,H2],{'转矩';'功率'},0);
end
xlabel('转速(rpm)');
title(str_sum4);

AA=[speed_kinds',torque_maxs',power_maxs'];

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-20 21:22
已编辑
门头沟学院 Java
纯真的河老师在喝茶:答应了就跑啊,实习随便跑啊,别被pua了,md就是找个廉价劳动力,还平稳过度正式工,到时候跟你说没转正
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务