一、项目目的
二、每一步的实现过程
针对项目的目标对任务进行步骤的拆分,第一步,提取excel中的数据,第二步,通过公式计算所求的放热率;第三步,将计算得到的放热率保存至一个新的excel中;第四步,画出不同情况下的曲线图;
1、提取excel中的数据
按照要求使用uigetfile函数提取excel中的数据,同时去掉excel中的空白列,便于后面对数据的处理。
在这里插入代码片clear;
clc;
file=uigetfile("*.xlsx")
shuju=readtable(file,"VariableNamingRule","preserve","Sheet",2)
data=rmmissing(shuju,2)
2、利用公式计算放热率
通过工程热力学的知识推导出汽油机缸压的计算公式,提取数据算出公式中每一个参数。在这里将公式用函数体现,便于对各个case进行求解。
各个喷油时刻的放热率和缸压变化率
b=0.08;r=0.05;l=0.2;k=1.3;c=0.00005;
Crank_Angle=data.("喷油时刻-13CA");
Pressure_13CA=data.("缸压");
Pressure_15CA=data.("缸压_1");
Pressure_17CA=data.("缸压_2");
Pressure_19CA=data.("缸压_3");
[Pressure_Rate13,heatRelease13]=JiSuan(data.("喷油时刻-13CA"),data.("缸压"));
[Pressure_Rate15,heatRelease15]=JiSuan(data.("喷油时刻-15CA"),data.("缸压_1"));
[Pressure_Rate17,heatRelease17]=JiSuan(data.("喷油时刻-17CA"),data.("缸压_2"));
[Pressure_Rate19,heatRelease19]=JiSuan(data.("喷油时刻-19CA"),data.("缸压_3"));
计算放热率和缸压变化率的函数
function [Pressure_Rate,heatRelease]=JiSuan(x,y)
b=0.08;r=0.05;l=0.2;k=1.3;c=0.00005;
V=(3.14/4)*(b^2)*(r*((1-cos(deg2rad(x)))+0.25*(r/l)*(1-cos(deg2rad(2*x)))))+c;
A=gradient(V,x);
Pressure_Rate=gradient(y,x);
heatRelease=(k/(k-1))*y.*A+(1/(k-1))*V.*Pressure_Rate;
end
3、将放热率保存在一个新的excel中
这里将各个case的放热率放在一起,转化成一个table,然后将table写进新建的excel表“放热率结果.xlsx”中。
heatRelease=[heatRelease13 heatRelease15 heatRelease17 heatRelease19]
fangre=array2table(heatRelease,"VariableNames",{'13CA时刻放热率','15CA时刻放热率','17CA时刻放热率','1CA时刻放热率'})
writetable(fangre,'放热率结果.xlsx')
4、画图
画图4种情况的缸压变化图和放热率图
将它画在一个figure中
figure('Name','结果图')
subplot(4,2,1)
huatu1(Crank_Angle,Pressure_13CA,Pressure_Rate13,data.Properties.VariableNames(1))
subplot(4,2,2)
huatu2(Crank_Angle,heatRelease13,data.Properties.VariableNames(1))
subplot(4,2,3)
huatu1(Crank_Angle,Pressure_15CA,Pressure_Rate15,data.Properties.VariableNames(3))
subplot(4,2,4)
huatu2(Crank_Angle,heatRelease15,data.Properties.VariableNames(3))
subplot(4,2,5)
huatu1(Crank_Angle,Pressure_17CA,Pressure_Rate17,data.Properties.VariableNames(5))
subplot(4,2,6)
huatu2(Crank_Angle,heatRelease17,data.Properties.VariableNames(5))
subplot(4,2,7)
huatu1(Crank_Angle,Pressure_19CA,Pressure_Rate19,data.Properties.VariableNames(7))
subplot(4,2,8)
huatu2(Crank_Angle,heatRelease19,data.Properties.VariableNames(7))
画图的函数1
function huatu1(Crank_Angle,Pressure,Pressure_Rate,variablename_input)
yyaxis left;
plot(Crank_Angle,Pressure/10);
axis([-200 200 0 5]);
ylabel('Cylinder pressure[MP]');
yyaxis right;
plot(Crank_Angle,Pressure_Rate)
%ylim([-2 3]);
ylabel('Pressure Rise Rate[Pa/deg]×10^5');
xlabel('Crank Angle[deg.]')
titlename1=[variablename_input '缸压曲线'];
title(titlename1);
end
画图的函数2
function huatu2(Crank_Angle,heatRelease,variablename_input)
plot(Crank_Angle,heatRelease*100000)
axis([-200 200 0 100]);
xlabel('Crank Angle[deg.]');
ylabel('heatRealease Rate[J/deg.]');
titlename2=[variablename_input '放热率曲线'];
title(titlename2);
end
结束
第一次写blog,后续会逐步改进,向各位前辈学习。