Matlab解决缸压问题

一、项目目的

任务的目的和要求

二、每一步的实现过程

针对项目的目标对任务进行步骤的拆分,第一步,提取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,后续会逐步改进,向各位前辈学习。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MATLAB可以用来解决库位分配问题。库位分配问题是一个优化问题,需要找到最佳的库位分配方案,以最大化物品存储数量或最小化物品存储成本。 MATLAB提供了强大的数学建模和优化工具箱,可以用来建立库位分配模型,并利用优化算法求解最佳方案。首先,需要定义库位分配的目标函数,可以根据具体情况选择最大化存储数量或最小化存储成本作为目标。然后,可以利用MATLAB提供的数学建模功能,将库位、产品、容量等作为变量,并约束各个变量之间的关系,例如库位的容量限制、产品的需求等。 接下来,可以使用MATLAB的优化工具箱中的优化函数,例如fmincon、ga、linprog等来求解库位分配问题。这些优化函数可以根据目标函数和约束条件,搜索最优解,找到使目标函数最大或最小的变量取值组合。在求解过程中,可以根据具体需求选择适当的优化算法,并使用MATLAB提供的优化参数调整函数的性能。 最后,可以利用MATLAB的可视化功能,将最佳库位分配方案以图表的形式展示出来,便于理解和分析。MATLAB提供了丰富的绘图函数,可以将库位、产品、容量等信息绘制在二维或三维图形中,帮助用户直观地了解最佳方案的布局和利用。 综上所述,MATLAB提供了强大的数学建模和优化工具,可以用来解决库位分配问题。通过定义目标函数、约束条件,利用优化算法搜索最佳解,并利用可视化功能展示最佳方案,可以得到满足需求的库位分配方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值