用MATLAB app designer设计人机交互界面——二阶线性动态电路可视化分析的研究
这是我第一次尝试写博客,我试着给出电路课上要求的电路实验编程。但是电路的类型有点儿多,所以我只以二阶动态电路RCL,进行全响应分析。
这儿就不给大家多说电路的相关知识了。哈哈。
害 我还是小白,这是我第一回用app designer,很多东西都是为了作业现学的,还有很多地方需要提高。希望大家一起进步!
介绍界面使用方法
利用MATLAB自带的app designer制作工具进行开发,使用了可输入文本,选项卡组,坐标轴,单选按钮组等。
点击初始化后,在电路类型中选择我们所要进行动态分析的电路类型。
在电容电路,电感电路,二阶电路和上面的时间常数,初始电容电压,初始电感电压输入所要输入的电路的参数,点击运行,在图像中会展示二阶电路动态变化曲线。
在时间中输入时间,会输出该时刻的电容电压和电感电流
关键代码展示
这儿只贴出了二阶RCL电路部分的代码。
elseif app.RadioButton5.Value == 1%对选择的按钮组的选择进行判断
r = str2double(app.Req3.Value);%对数据的读取
l = str2double(app.L2.Value);
c = str2double(app.C2.Value);
us = str2double(app.U2.Value);
uc0 = str2double(app.Uc.Value);
il0 = str2double(app.Il.Value);
ttt = str2double(app.T.Value);
if app.RadioButton6.Value == 1%选择RCL电路
syms uc t
s = dsolve('l*Di+r*i-uc = us','i = -c*Duc','i(0) = il0','uc(0) = uc0','t');%讲二阶电路的微分方程,分解成两个微分方程,并进行求解
ul = us - s.i*r + s.uc
h = 1;
for t=0:0.001:r*c*7/l*5
ill(h) = eval(s.i);
ucc(h) = eval(s.uc);
ull(h) = eval(ul);
h=h+1;
end
t = 0:0.001:r*c*7/l*5;
plot(app.UIAxes,t,ill,'r',t,ucc,'g-',t,ull,'b-.')%绘制图像
title(app.UIAxes,'二阶RLC串联电路动态特性分析')
xlabel(app.UIAxes,'时间 t')
ylabel(app.UIAxes,'Il(r)/Uc(g)/Ul(b)')%MATLAB2016 app designer里面不能用legend函数,所以只好用括号里面的字母来表示图线的对应颜色了
if(~isnan(ttt))
t = ttt;
qqq = eval(s.i);
ppp = eval(s.uc);
app.dispIs.Value = num2str(qqq);
app.dispUc.Value = num2str(ppp);
end
end
end
感觉app designer的人机交互页面跟gui一样,主要还是对输入数据的读取和使用,其他的跟MATLAB的使用方法基本上一样了。甚至我觉得app designer使用更简单一点。
小白们刚开始时,要注意的是对组件浏览器的使用吧。我在那里迷糊了好久,后来才搞清楚。而且要分清楚不同组件是如何读取value的。
在MATLAB2016中,比如app.T.Value,就可以读取T文本框中的值了。还要注意的是使用编辑字段还是数值或者文本的,然后进行相应的转换。
此外,我把所有的函数都放在了运行的回调函数里面。
哈哈,还有就是,如果编代码的时候,有其他什么不懂的地方,上网搜吧。
加油嗷!