中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 103查看
  • 0回复

[MATLAB] App Designer 基础应用:汽车动力性(一)

[复制链接]

该用户从未签到

发表于 2-3-2024 09:24:14 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


本来小白想用GUI 来设计一款用户界面

但是

App Designer 基础应用:汽车动力性(一)w1.jpg

MATLAB居然告诉我GUI 将会被删除!!!

需改用App Designer  !!!

于是我查询了一下原因,总结一下就是App Designer操作更加简便,界面更加整洁、科技(好吧,至少我这么认为)

既然以后的App Designer 会成为MATLAB用户界面设计的主要工具,那小白这次就利用App Designer 来简单设计一款满足以下需求的App

《汽车理论》第七版 第一章课后习题1.3

给出汽车相关参数

    绘制汽车驱动力与行驶阻力平衡图

    计算出最高车速

    绘制爬坡度与车速关系曲线

    计算出最大爬坡度和相应的附着率

    绘制汽车加速度倒数曲线

    绘制汽车2档起步加速至相应速度下的车速-时间曲线,计算加速时间


Let's Start

我们打开MATLAB-主页-新建-App-空白App

App Designer 基础应用:汽车动力性(一)w2.jpg

添加组件并编辑相关文字描述

App Designer 基础应用:汽车动力性(一)w3.jpg

App Designer 基础应用:汽车动力性(一)w4.jpg

App Designer 基础应用:汽车动力性(一)w5.jpg

App Designer 基础应用:汽车动力性(一)w6.jpg

App Designer 基础应用:汽车动力性(一)w7.jpg

布置好界面后我们便开始编写回调函数了打开Button组件的回调函数编辑区,编写好以下代码:g=9.8; ig=[5.56 2.769 1.644 1.00 0.793];
nmin=app.nminEditField.Value;nmax=app.nmaxEditField.Value;m=app.mEditField.Value;r=app.rEditField.Value;nt=app.ntEditField.Value;CDA=app.CDAEditField.Value;f=app.fEditField.Value;i0=app.i0EditField.Value;
n=nmin:200:nmax;Tq=-19.313+295.27*n./1000-165.44*(n./1000).^2+40.874*(n./1000).^3-3.8445*(n./1000).^4;
Ft1=Tq.*ig(1).*i0.*nt./r;Ft2=Tq.*ig(2).*i0.*nt./r;Ft3=Tq.*ig(3).*i0.*nt./r;Ft4=Tq.*ig(4).*i0.*nt./r;Ft5=Tq.*ig(5).*i0.*nt./r;ua1=0.377.*r.*n./ig(1)./i0;ua2=0.377.*r.*n./ig(2)./i0;ua3=0.377.*r.*n./ig(3)./i0;ua4=0.377.*r.*n./ig(4)./i0;ua5=0.377.*r.*n./ig(5)./i0;ua=0:5:220;Ff=g.*m.*f;Fw=CDA.*ua.^2/21.15;F=Ff+Fw;
%%最高车速Fw5=CDA.*ua5.^2/21.15;Fz1=Ff+Fw5;[~,k]=min(abs(Ft5-Fz1));umax=ua5(k);app.kmhEditField.Value=umax;plot(app.UIAxes1,ua1,Ft1,ua2,Ft2,ua3,Ft3,ua4,Ft4,ua5,Ft5,ua,F);
%%最高爬坡度/附着率Fw1=CDA.*ua1.^2/21.15;Fw2=CDA.*ua2.^2/21.15;Fw3=CDA.*ua3.^2/21.15;Fw4=CDA.*ua4.^2/21.15;i1=asin((Ft1-Ff-Fw1)./m/g);i2=asin((Ft2-Ff-Fw2)./m/g);i3=asin((Ft3-Ff-Fw3)./m/g);i4=asin((Ft4-Ff-Fw4)./m/g);i5=asin((Ft5-Ff-Fw5)./m/g);plot(app.UIAxes_2,ua1,i1,ua2,i2,ua3,i3,ua4,i4,ua5,i5)
imax=max(i1);app.radEditField.Value=imax;%附着率L=app.LEditField.Value;a=app.aEditField.Value;hg=app.hgEditField.Value;b=L-a;q=imax;Cf1=q./(b./L-hg./L.*q);Cf2=q./(a./L+hg./L.*q);ifCf1<1Cf=Cf1;elseCf=Cf2;endapp.CfEditField.Value=Cf;
%%加速度倒数曲线Iw1=app.Iw1EditField.Value;Iw2=app.Iw2EditField.Value;If=app.IfEditField.Value;
Thta1=1+(Iw1+Iw2)./(m+r.^2)+If.*ig(1).^2.*i0.^2.*nt./(m.*r.^2);Thta2=1+(Iw1+Iw2)./(m+r.^2)+If.*ig(2).^2.*i0.^2.*nt./(m.*r.^2);Thta3=1+(Iw1+Iw2)./(m+r.^2)+If.*ig(3).^2.*i0.^2.*nt./(m.*r.^2);Thta4=1+(Iw1+Iw2)./(m+r.^2)+If.*ig(4).^2.*i0.^2.*nt./(m.*r.^2);Thta5=1+(Iw1+Iw2)./(m+r.^2)+If.*ig(5).^2.*i0.^2.*nt./(m.*r.^2);a1=1./((Ft1-Ff-Fw1)./Thta1./m);a2=1./((Ft2-Ff-Fw2)./Thta2./m);a3=1./((Ft3-Ff-Fw3)./Thta3./m);a4=1./((Ft4-Ff-Fw4)./Thta4./m);a5=1./((Ft5-Ff-Fw5)./Thta5./m);
plot(app.UIAxes_3,ua1,a1,ua2,a2,ua3,a3,ua4,a4,ua5,a5)app.UIAxes_3.XLim=[0 95];app.UIAxes_3.YLim=[0 15];
%%车速-时间曲线/加速时间G=m.*g;u1=0.377.*r.*nmin./ig./i0;u2=0.377.*r.*nmax./ig./i0;deta=0.*ig;fori=1:5deta(i)=1+(Iw1+Iw2)/(m*r^2)+(If*(ig(i))^2*i0^2*nt)/(m*r^2);endua=6:0.01:99;N=length(ua);n=0;Tq=0;Ft=0;inv_a=0*ua;delta=0*ua;Ff=G*f;Fw=CDA*ua.^2/21.15;fori=1:Nk=i;ifua(i)<=u2(2)n=ua(i)*(ig(2)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445 *(n/1000)^4;Ft=Tq*ig(2)*i0*nt/r;inv_a(i)=(deta(2)*m)/(Ft-Ff-Fw(i));delta(i)=0.01*inv_a(i)/3.6;elseifua(i)<=u2(3)n=ua(i)*(ig(3)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445 *(n/1000)^4;Ft=Tq*ig(3)*i0*nt/r;inv_a(i)=(deta(3)*m)/(Ft-Ff-Fw(i));delta(i)=0.01*inv_a(i)/3.6;elseifua(i)<=u2(4)n=ua(i)*(ig(4)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445 *(n/1000)^4;Ft=Tq*ig(4)*i0*nt/r;inv_a(i)=(deta(4)*m)/(Ft-Ff-Fw(i));delta(i)=0.01*inv_a(i)/3.6;elsen=ua(i)*(ig(5)*i0/r)/0.377;Tq=-19.313+295.27*(n/1000)-165.44*(n/1000)^2+40.874*(n/1000)^3-3.8445 *(n/1000)^4;Ft=Tq*ig(5)*i0*nt/r;inv_a(i)=(deta(5)*m)/(Ft-Ff-Fw(i));delta(i)=0.01*inv_a(i)/3.6;enda=delta(1:k);t(i)=sum(a);endplot(app.UIAxes_4,t,ua);app.UIAxes_4.XLim=[0 80];app.UIAxes_4.YLim=[0 100];p(1)=spline(ua,t);T=app.uaEditField.Value;%数值可以输入自己需要的任意值t=ppval(p(1),T)app.tEditField.Value=t;点击运行弹出App界面
点击Button(计算)

App Designer 基础应用:汽车动力性(一)w8.jpg

至此App便设计好了
若想其他的MATLAB用户拥有此App,我们又该如何设置呢
?

App Designer 基础应用:汽车动力性(一)w9.jpg


    添加App描述

    设置保存路径

    打包App



App Designer 基础应用:汽车动力性(一)w10.jpg

打开保存文件夹中的App安装文件,点击安装

App Designer 基础应用:汽车动力性(一)w11.jpg

在主页App菜单栏中便会提示“已安装”

App Designer 基础应用:汽车动力性(一)w12.jpg

之后便可以在MATLAB中打开此App

MATLAB的App Designer 是一个十分便利的用户界面设计工具,创作思维可以天马行空,小白认为将来App Designer 正如现在MATLAB所提示的那样:
App Designer 基础应用:汽车动力性(一)w13.jpg

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 3-5-2024 10:39 , Processed in 0.265547 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.