%%
% 第一步 导入数据
clear;
clc;
file=uigetfile("*.xlsx")
shuju=readtable(file,"VariableNamingRule","preserve","Sheet",2);
data=rmmissing(shuju,2)
%%
% 第二步 计算放热率曲线
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"));
heatRelease=[heatRelease13 heatRelease15 heatRelease17 heatRelease19];
fangre=array2table(heatRelease,"VariableNames",{'13CA时刻放热率','15CA时刻放热率','17CA时刻放热率','1CA时刻放热率'})
writetable(fangre,'放热率结果.xlsx');
%%
% 第三步 画图
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))
%%
% 计算放热率和缸压的函数
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
%%
% 画图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