版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10讲
App界面设计一、图形用户界面设计概述二、组件及属性三、句柄及回调函数的使用四、UI设计案例五、App应用设计六、菜单设计七、对话框设计主讲内容一、图形用户界面设计概述1、MATLAB图形用户界面(GUI)
图形界面中各对象关系有:图形根对象框架窗口对象坐标系对象UImenu对象UIcontrol对象文本对象图片对象曲面对象线条对象影像对象Uicontestmenu对象
创建App界面的组件库分为常用、容器、图窗工具和仪器组件。单击【新建】菜单中的“APP”
或在命令行中键入
“appdesigner”即可启动App设计界面
构建App时,可使用按钮、复选框、树和下拉列表等标准组件,也可使用仪表、指示灯、旋钮和开关等仪器组件,复现仪表面板的外观和操作。2、App(Designer)App界面设计菜单设计对话框设计3、启动方式系统提供的模板5、组件的使用序号控件对象控件名称说明1HTMLApp.HTML网页嵌入到App中2下拉框App.DropDown创建下拉框3切换按钮组App.ButtonGroup2创建切换按钮4列表框App.ListBox创建列表框5单选按钮组App.ButtonGroup创建单选按钮组6图像App.Image添加图片7坐标区App.UIAxes创建UI绘图坐标区8复选框App.CheckBox创建复选框9微调器App.Spinner创建微调器10按钮App.Button创建按钮11文本区域App.TextArea创建文本区域12日期选择器App.DatePicker创建日期13标签App.Label创建标签14树App.Tree创建树15树(复选框)App.Tree2创建树复选框16滑块App.Slider创建滑块17状态按钮App.Button2创建状态按钮18编辑字段(数值)App.EditField创建数值编辑框19编辑字段(文本)App.EditField
创建文本编辑框20表App.UITable创建表21超链接App.Hyperlink创建超级链接(1)基本组件序号控件对象控件名称说明1网格布局App.GridLayout按照网格布局界面2选项卡组App.TabGroup创建选项卡组3面板App.Panel创建面板序号控件对象控件名称说明1上下文菜单App.contextMenu创建上下文菜单2工具栏App.Toolbar添加工具栏3菜单栏App.Menu创建菜单(2)容器及图窗组件工具序号组件名称说明1App.Gauge创建圆形仪表2App.Gauge2创建90度仪表3App.Gauge3创建线性仪表4App.Gauge4创建半圆形仪表5App.Knob创建圆形旋钮6App.Knob2创建分档旋钮7App.Lamp创建信号灯8App.Switch创建开关9App.Switch2创建跷板开关10App.Switch3创建拨动开关(3)仪表组件1、App组件公共属性二、组件及属性属性名说
明Children取值为空矩阵,因为组件对象没有自己的子对象Parent取值为某个图形窗口,表明组件对象所在的图形窗口句柄Tag取值为字符串,定义组件标识值,根据标识值控制组件对象;Type取值为uicontrol,表明图形对象的类型TooltipString当鼠标指针位于此组件上时显示提示信息UserDate取值为空矩阵,用于保存与该组件对象相关的重要数据和信息Position组件对象的尺寸和位置Visible取值为on或off,表示是否可见属性名说
明BackgroundColor背景颜色为预定义字符或RGB数值;默认值为浅灰色ForegroundColor前景标题字符颜色为预定义字符或RGB数值;默认值为黑色Enable取值为on(默认值),inactive和offExtend取值
0,width,height],组件对象标题字符的位置和尺寸Max/Min取值都为数值,默认值分别为1和0String取值为字符串矩阵或块数组,定义组件对象标题或选项内容Style取值可以是pushbutton(默认值),radiobutton,checkbox,edit,text,slider,frame,popupmenu或listboxUnits取值可以是pixels(默认值),normalized(相对单位),inches,centimeters(厘米)或pound(磅)Value取值矢量/数值,其含义及解释依赖于组件对象的类型。2、App组件对象控制属性属性名说
明FontAngle取值为normal(正常体,默认值),italic(斜体)FontName取值为组件标题等字体的字库名;FontSize:取值为数值,设置字体大小FontUnits取值为points(默认值),normalized,inches,centimeters或pixelsFontWeight取值为normal(默认值),light,demi和bold,定义字符的粗细Rotation取值为0-2π数值,设置字体旋转角度,HorizontalAligment取值为left,center(默认值)或
right,设置组件对齐方式3、组件对象修饰属性属性名说
明ListboxTop取值为数量值,在列表框中显示的最顶层的字符串的索引SliderStep取值为两元素矢量[minstep,maxstep],用于slider组件对象Selected取值为on或off(默认值)SlectionHoghlightSlectionHoghlight:取值为on或off(默认值)Max/Min取值都为数值,默认值分别为1和0String取值为字符串矩阵或块数组,定义组件对象标题或选项内容4、组件对象辅助属性(1)set语法格式:set(句柄,属性名1,属性值1,属性名2,属性值2,…)使用语法set(handle,‘PropertyName’,value)set(h2,‘color’,‘r’)将句柄h2的对象的颜色设置成红色。(2)语法格式:V=get(句柄,属性名)使用语法是get(handle,‘PropertyName’)h1=figure它用缺省的属性值建立一个新的图形窗口,1、句柄对象三、句柄及回调函数的使用2、句柄常用函数函数名说明函数名说明figure创建一个新的图形对象gcbo获得当前正在执行调用的对象的句柄uimenu生成中层次菜单与下级子菜单gcbf获取包括正在执行调用的对象的图形句柄gcf获得当前图形窗口的句柄delete删除句柄所对应的图形对象gca获得当前坐标轴的句柄。findobj查找具有某种属性的图形对象gco获得当前对象的句柄isa判断变量是否为函数句柄例1使用句柄完成正弦和余弦绘图fig=uifigure;%建立图窗画布赋给句柄figax=uiaxes(fig);%ax为画布坐标区句柄x=0:pi/20:2*pi;%设置横坐标y1=sin(x);%设置纵坐标为正弦幅值y1y2=cos(x);%设置纵坐标为余弦幅值y2h=plot(ax,x,y1,x,y2);%建立绘制正弦、余弦曲线句柄hset(h,'Color','r','LineStyle','--');%设置句柄grid(ax,"on");%添加栅格title(ax,"绘制正弦曲线");%添加标题ylabel(ax,'幅值');xlabel(ax,'时间');程序代码:6、回调函数画布输入程序代码到这里代码视图回调函数是连接程序界面整个程序系统的实质性功能的纽带。通过回调函数完成组件的行为动作。方法是:选中画布中的组件,可在右侧组件浏览器中添加回调函数functionsubmitButtonPushed(App,event)globalnifisempty(n)n=0endn=n+1set(App.w1,"value",n);end例2利用回调函数计数器(2)编写按钮回调函数:操作步骤:(1)在画布上添加标签、编辑字段和按钮组件,并在浏览器上修改显示属性,如图例3利用转换函数,设计数制转换界面操作步骤:(1)在画布上添加标签、编辑字段和按钮组件,并在浏览器上修改显示属性,如图:A=App.d.Value%获取输入的十进制数set(App.h,"value",dec2hex(A))%转换成十六进制set(App.o,"value",dec2base(A,8))%转换成八进制set(App.b,"value",dec2bin(A))%转换成二进制(2)在开始转换按钮上编写回调函数:set(App.d,"Value",0)%将输入数据置0set(App.h,"value","")%将输出数据清空set(App.o,"value","")set(App.b,"value","")(3)在重置按钮上编写回调函数:运行结果输入数据例4制作一个简单计算器界面,运行结果如图:输入数据输入数据(2)在按钮“+、-、*、/”上添加回调函数:a=App.Editfield.Value;b=App.Editfield2.Value;c=a+b;%修改-、*、/改“+”改“-”改“×”改“/”(1)在画布上添加标签、2个编辑字段(数值)和4个按钮组件操作步骤:模拟一个按钮操作的简易计算器界面(1)在画布上添加标签、编辑字段(文本)和18个按钮(2)使用组件浏览器修改显示属性如图:例51个编辑字段(文本)操作步骤:(2)使用组件浏览器修改显示属性如图:functionButton_1Pushed(app,event)text=app.cal.Value;text=strcat(text,'0');
app.cal.Value=text;
end……functionButton_9Pushed(app,event)text=app.cal.Value;text=strcat(text,'9');
app.cal.Value=text;
end(4)在“-、+、*、/、.”按钮上编写回调函数与0~9基本相同。
functionButton_13Pushed(app,event)text=app.cal.Value;text=strcat(text,'*');
app.cal.Value=text;end(3)在“0~9”按钮上编写回调函数(5)在“=”按钮上编写回调函数functionButton_16Pushed(app,event)text=app.cal.Value;text=eval(text);
app.cal.Value=num2str(text);
end(6)在“退格”按钮上编写回调函数:text=app.cal.Value;iflength(text)==1
app.cal.Value='';else text(end)='';
app.cal.Value=text;end(7)在“清空”按钮上编写回调函数:functionButton_18ValueChanged(app,event)
app.cal.Value='';end运行结果例6利用按钮绘制下面的几何图形(1)在画布上添加标签、4个按钮和坐标轴组件,并在组件浏览器上修改显示属性。(2)在“画圆”按钮上编写回调函数:functionButtonPushed(app,event)title(app.UIAxes,'画圆');
x_circle=3*cos((0:10:360)*pi/180);
y_circle=3*sin((0:10:360)*pi/180);plot(app.UIAxes,x_circle,y_circle,'rp');axis(app.UIAxes,[-4,4,-4,4]);axis(app.UIAxes,'equal');grid(app.UIAxes,"on");end操作步骤:(3)在“画三角形”按钮上添加回调函数:functionButton_2Pushed(app,event)title(app.UIAxes,'画三角形');
x_triangle=3*cos([90,210,330,90]*pi/180);
y_triangle=3*sin([90,210,330,90]*pi/180);plot(app.UIAxes,x_triangle,y_triangle,':bO');axis(app.UIAxes,[-4,4,-4,4]);axis(app.UIAxes,'equal');grid(app.UIAxes,"on");end(4)在“画方框”按钮上编写回调函数:functionButton_4Pushed(app,event)title(app.UIAxes,'画方框');
x_square=[-3,3,3,-3,-3];
y_square=[3,3,-3,-3,3];plot(app.UIAxes,x_square,y_square,'-kh');axis(app.UIAxes,[-4,4,-4,4]);axis(app.UIAxes,'equal');grid(app.UIAxes,"on");end(5)在“画梯形”按钮上编写回调函数:functionButtonPushed(app,event)title(app.UIAxes,'画梯形');
x_square=[-2,2,4,-4,-2];y_square=[3,3,-3,-3,3];plot(app.UIAxes,x_square,y_square,'-b');axis(app.UIAxes,[-4,4,-4,4]);axis(app.UIAxes,'equal');grid(app.UIAxes,"on");
end例7使用切换按钮组设计本教材的导读用户界面。(1)在画布上分别添加标签、编辑字段、日期选择器、切换按钮组和文本区域,如图:(2)在“组件浏览器”中修改各个组件的显示属性操作步骤:functionButtonGroupSelectionChanged(app,event)selectedButton=app.ButtonGroup.SelectedObject;
switchselectedButton.Textcase'MATLAB基础知识'set(app.TextArea,'value',"主要学习第1章")case'矩阵及工程计算'set(app.TextArea,'value',"主要学习第2-3章")case'控制理论应用'set(app.TextArea,'value',"主要学习第4-6章")case'Simulink仿真应用'set(app.TextArea,'value',"主要学习第7-9章")case'APP界面设计'set(app.TextArea,'value',"主要学习第10章")case'MATLAB建模应用'set(app.TextArea,'value',"主要学习第11章")endend(3)选中切换按钮组件,编写回调函数代码:运行结果例8根据控制系统框图,使用试凑法设计PID参数的人-机交互界面。要求:通过不断试凑Kp,Ti和Td参数,使得满足超调量小于5%,稳态时间小于40秒。输出超调量、稳态时间参数并绘制阶跃响应曲线。PID换算公式:操作步骤:(1)在画布上添加标签、图像、坐标轴、面板、编辑文本(数值)和按钮组件,并在组件浏览器上修改显示属性。其中,图像框用于添加传递函数图片,如图:(2)选中“绘制图形”按钮编写回调函数代码:functionButtonPushed(app,event)G=tf([1-0.60.12],[30194.20.12])
Kp=app.KpEditField.Value%取Kp的值
Ti=app.TiEditField.Value%取Ti的值Td=app.TdEditField.Value%取Td的值
PIDGc=tf([Kp*Ti*Td,Kp*Ti,Kp],[Ti,0])%PID传递函数G1=feedback(G,1);%不加PID闭环系统传函G2=feedback(PIDGc*G,1)%加入PID的闭环系统传函[y,t]=step(G2);%取阶跃曲线的横、纵坐标值[Y,k]=max(y);%求阶跃响应曲线的最大值C=dcgain(G2);%C是稳态值
Mp=100*(Y-C)/C%计算超调量
i=length(t);%计算时间的长度while(y(i)>0.95*C)&(y(i)<1.05*C)%设置稳态条件为5%
i=i-1;end
ts=t(i)%得到稳态时间t=0:100;y2=step(G1,t);y1=step(G2,t);grid(app.UIAxes,"on");plot(app.UIAxes,t,y1,t,y2);grid(app.UIAxes,"on");end(3)在“重置参数”按钮上编写回调函数:
functionButton_2Pushed(app,event)set(app.KpEditField,'value',0);%清除Kp的值set(app.TiEditField,'value',0);%清除Ti的值set(app.TdEditField,'value',0);%清除Td的值
cla(app.UIAxes);%清除图形endPID控制后阶跃响应未加控制阶跃响应Mp=3.1299,ts=31.0381s,从输出曲线和结果看出,试凑的PID参数满足了系统性能指标。运行结果:填写试凑参数例9操作步骤:(1)在画布添加标签、编辑字段、坐标区、按钮组件,并分别在组件浏览器上修改组件的标签属性,如图:创建一个APP界面,完成在界面上输入阶数,绘制传递函数为纯延迟环节G(s)=e-0.5t的有理函数近似阶跃响应曲线。(2)选中
“绘图“按钮,编写回调函数:functionButtonPushed(app,event)n=app.EditField.Value;[num,den]=pade(0.5,n);G1=tf(num,den);step(app.UIAxes,G1);grid(app.UIAxes,"on")end(3)选中
“绘图“按钮,编写回调函数:functionButton_2Pushed(app,event)n1=app.EditField.Value;[num,den]=pade(0.5,n1);G2=tf(num,den);step(app.UIAxes2,g2);grid(app.UIAxes2,"on");end(4)选中左右两侧“重置“按钮,分别编写回调函数:functionButton_3Pushed(app,event)%左侧”重置”按钮
cla(app.UIAxes);set(app.EditField,"value",0);endfunctionButton_4Pushed(app,event)%右侧”重置”按钮
cla(app.UIAxes);set(app.EditField,"value",0);end运行结果创建一个“动态特性参数法PID控制器设计”的APP界面,通过输入被控对象传递函数的T、K、τ,自动计算PID控制参数,并实时显示控制后的阶跃响应曲线。操作步骤:(1)在“App设计”中选择“可自动调整布局的两栏式App”模板进行设计。(2)在画布分别添加图像、编辑字段(数值)、按钮组件,、标签和坐标组件,并分别修改显示属性,如图:例10(3)在“开始绘图”按钮上编写回调函数:
functionButtonPushed(app,event)K=app.EditField.Value;%从编辑字段提取数据
T=app.EditField_2.Value;tau=app.EditField_3.Value;G1=tf(K,[T,1]);[n1,d1]=pade(tau,2);%延迟环节tau,使用pade函数等价2节系统,G2=tf(n1,d1);Gp=G1*G2;
Kp=(tau/T+0.88)/(2.6*K*(tau/T-0.15));Ti=0.81*T+0.19*tau;Td=0.25*T;Gc=tf([Kp*Ti*Td,Kp*Ti,Kp],[Ti,0]);G=feedback(Gp*Gc,1);t=0:0.01:300%设置时间y=step(G,t);plot(app.UIAxes,t,y,'LineWidth',0.2);app.EditField_4.Value=Kp;app.EditField_5.Value=Ti;app.EditField_6.Value=Td;end(4)在“重新绘图”按钮上编写回调函数:functionButton_4Pushed(app,event)Set(app.EditField,’Value’,0);%编辑字段清零set(app.EditField_2,’Value’,0);%同上set(app.EditField_3,’Value’,0);set(app.EditField_4,’Value’,0);set(app.EditField_5,’Value’,0);set(app.EditField_6,’Value’,0);%同上
cla(app.UIAxes);%清除坐标区图形end填写试凑参数运行结果:例11使用列表框绘制二阶系统特性时域分析曲线(1)在画布上添加标签、坐标区、列表、图像(显示传递函数)和编辑字段(数值)组件,并在组件浏览器上修改显示属性,如图操作步骤:47(2)在列表框组件上编写回调函数:functionListBoxValueChanged(app,event)w=app.EditField.Value;
ksai=app.EditField_2.Value;G=tf(w^2,[1,2*ksai*w,w^2])%添加传递函数value=app.ListBox.Value;switchvaluecase"阶跃响应"
cla(app.UIAxes);%清除坐标区图形step(app.UIAxes,G)%在坐标区绘制阶跃响应曲线grid(app.UIAxes,"on")case"条带图"ribbon(app.UIAxes,step(G));%
ribbon(Y)绘制三维条带。title(app.UIAxes,'二阶系统条带图');grid(app.UIAxes,"on")case"脉冲响应"
cla(app.UIAxes);impulse(app.UIAxes,G);grid(app.UIAxes,"on")case"斜波响应"
cla(app.UIAxes);t=0:0.1:10;
lsim(app.UIAxes,G,t,t);grid(app.UIAxes,"on")endend运行结果操作步骤:(1)在画布上添加标签、图像、坐标区和下拉框组件,单击图像组件,在组件浏览器上删除坐标轴默认标尺并修改组件显示属性,如图:通过下拉框,选择控制理论中时域和频域分析绘图。例12functionDropDownValueChanged(app,event)value=app.DropDown.Value;
num=[0.5,5];d1=[0.5,1];d2=[1,0.12,1];%输入传函参数den=conv(d1,d2);G=tf(num,den);%建立传递函数模型switchvaluecase"绘制根轨迹图"
rlocus(app.UIAxes,G);grid(app.UIAxes,"on");case"绘制阶跃响应曲线"[y,t]=step(G);%绘制阶跃响应曲线plot(app.UIAxes,t,y);grid(app.UIAxes,"on");title(app.UIAxes,"阶跃响应曲线")case"绘制BODE图"bode(app.UIAxes,G);grid(app.UIAxes,"on");case"绘制Nyquist图"
nyquist(app.UIAxes,G);grid(app.UIAxes,"on");case"绘制Nichols图"
nichols(app.UIAxes,G);endend(2)在列表框组件上编写回调函数:运行结果使用微调器、滑块联动改变二阶系统的阻尼比,并在编辑字段中显示当前的值,要求根据滑块值实时显示绘制的图形。操作步骤:(1)在画布上添加标签、图像、微调器、滑块、编辑字段(数值)和坐标区组件,在组件浏览器上修改各个组件的显示标签,如图:例13(2)在微调器组件上编写回调函数:functionSpinnerValueChanged(app,event)value=app.Spinner.Value;V=value;set(app.Slider,"value",V)%显示滑块set(app.EditField,"value",V)%显示编辑字段中end(3)在滑块组件上编写回调函数:functionSliderValueChanged(app,event)
cla(app.UIAxes);value=app.Slider.Value;V=value;set(app.Spinner,"value",V);set(app.EditField,"value",V);G=tf(1,[1,2*V,1]);step(app.UIAxes,G);grid(app.UIAxes,"on");end运行结果
利用脚本编程,创建一个链接网站地址、邮箱、图片及App的界面。编程代码:fig=uifigure;lbl=uilabel(fig,'Position',[100,380,300,30],'FontSiz',26);%设置标题lbl.Text='超链接的使用方法';hlink=uihyperlink(fig,'Position',[10030030030],'FontSiz',16);%设置网站hlink.Text='链接MathWorks网站获得技术支持';hlink.URL='/';hlink1=uihyperlink(fig,'Position',[10025023030],'FontSiz',16);%设置邮箱hlink1.Text='联系我们,发送到我的邮箱';email='6420210053@';hlink1.URL=['mailto:'email];hlink2=uihyperlink(fig,'Position',[10020030030],'FontSiz',16);%设置图片hlink2.Text='链接液位模型图片';htmlFile='d:\matlab_exp\1.jpg';hlink2.URL=['file:///'htmlFile];hlink3=uihyperlink(fig,'Position',[10015030030],'FontSiz',16);例14hlink3.Text='试凑法设计PID控制器';htmlFile1='d:\matlab_exp\controller.mlapp';hlink3.URL=['file:///'htmlFile1];链接液位图片链接App的UI链接网站链接邮箱运行结果编程代码:fig=uifigure;%创建APP图窗t1=uitree(fig,'Position',[200,220,220,100]);%创建树parent=uitreenode(t1,'Text','数学模型的常用表示方法');child1=uitreenode(parent,'Text','微分方程');child2=uitreenode(parent,'Text','传递函数');child3=uitreenode(parent,'Text','动态结构图');t=uitree(fig,'checkbox');%在指定位置创建编辑字段树parent=uitreenode(t,'Text','你常用的建模方法');child1=uitreenode(parent,'Text','线性规划');child2=uitreenode(parent,'Text','非线性规划');child3=uitreenode(parent,'Text','动态规划');child4=uitreenode(parent,'Text','多目标规划');expand(t)利用脚本编程创建标准树和复选框树界面。例15运行结果
利用脚本编程,创建二级树结构。编程代码:fig=uifigure;lbl=uilabel(fig);
lbl.Text="基于MATLAB中APP的界面设计导读";%添加标题
lbl.FontSize=28;
lbl.Position=[30320500100];%标题位置t=uitree(fig,'Position',[6020380320]);%树位置%ParentMenu主菜单n1=uitreenode(t,"Text","App基本组件的使用")n2=uitreenode(t,"Text","App仪器组件的使用")n3=uitreenode(t,"Text","App菜单设计的使用")%ChildMenu子菜单n11=uitreenode(n1,"Text","标签、按钮编辑字段");n12=uitreenode(n1,"Text","单选按钮组、切换按钮组、复选框、面板与选项卡组件");n13=uitreenode(n1,"Text","坐标区和图像组件");n14=uitreenode(n1,"Text","列表与下拉框组件");n15=uitreenode(n1,"Text","滑块与微调器组件");
例16n16=uitreenode(n1,"Text","表与树组件");n21=uitreenode(n2,"Text","信号灯与旋钮");n21=uitreenode(n2,"Text","直角与半圆仪表盘");n31=uitreenode(n3,"Text","菜单设计");n32=uitreenode(n3,"Text","对话框设计");expand(t)运行结果模拟一个模拟工作操作台界面,要求滑块到达80%时显示提示信息并让信号灯变成红色。画图根据选择频率和设定的偏移量进行绘制正弦曲线,设选择频率是x,则y=sinfx+x1,其中x1为设置的偏移量。如图:例17(1)单击【新建】菜单中的“APP”或在命令行中键入
“appdesigner”启动
App设计工具。
(2)打开窗口在AppDesigner画布上添加1个标题标签、2个文本编辑框和一个日期组件,使用对齐调整布局。(3)右击标题修改标签文字大小(FontSize)及显示的文字“工作台操作界面”。(4)将滑块组件从组件库拖到画布合适的区域,双击标签并将词语
Slider
替换为“滑动条”,选中滑块在属性中修改limits值为“0,200”,如图:操作步骤:(5)在滑块下面依次拖动2个标签、1个信号灯,选中滑块,在右下角属性中选择“回调”,在“SliderValueChanged”,单击右侧的按钮添加代码,每当用户移动滑块时该函数都会执行MATLAB命令。(6)在滑块回调函数中添加代码,根据滑块值达到满刻度的80%时,在界面的标签(app.Label_12)中显示“已经到达80%”,同时,将信号灯(app.Lamp)点亮。functionSliderValueChanged(app,event)value=app.Slider.Value;%取滑动条值ifvalue==160%满足给定条件app.Label_12.Text='已经到达80%';%标签显示app.Lamp.Color='red'%信号灯变红色endend(7)在界面上依次再拖动2个复选框、1个仪表、1个旋钮、1个坐标区、一个文本框和一个按钮,如图(8)通过点击“设计视图”编辑排列布局,修改标签显示,分别选中“Lamp”修改为“信号灯”、选择“label1”修改为“进度显示”
、选中“Gauge”修改为“偏移量显示”、选中“Knob”为“选择频率”、选中“EditField3”修改为“设置偏移量”,选择按钮“Button”修改为“开始画图”。最后选中按钮在代码视图中,添加回调函数:functionButtonPushed(app,event)f=app.Knob.Value;%取旋钮的值theta=f/180*pi;%变成弧度x=linspace(0,2*pi,60);%构建横坐标
app.Gauge.Value=str2num(app.EditField_3.Value);%取设置偏移量x1=app.Gauge.Value;%取偏移量y=sin(theta*x+x1);%求正弦输出plot(app.UIAxes,x,y,'LineWidth',0.2);%绘图
end
end六、菜单设计1、使用App设计菜单增加主菜单项增加子菜单项菜单窗口名增加弹出菜单操作步骤:(1)在画布上拖动“菜单栏”组件,如图:(2)分别单击“+”号可增加主、子和弹出菜单,在组件浏览器上修改菜单名称,如图:(3)在组件浏览器上修改菜单修改菜单名例如:修改菜单名称结果:(4)添加回调函数
选中某一个菜单项,单击“回调”按钮,再单击“MenuSelecttedFcn回调”即可打开回调函数的代码视图,在编辑窗口中输入命令程序即可,如图:输入命令程序先使用以figure建立图形窗口:figure(’menubar’,’none’)作MenuBar属性:none隐藏图形窗口的标准菜单再使用uimenu函数建立一级菜单项和子菜单项。
建立一级菜单命令格式:
一级菜单句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)
建立子菜单项的函数调用格式为:
子菜单句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…)菜单(uimenu):以figure图形窗口对象作为“父”,从一批功能选项中浏览和选择某项功能图形窗口标准菜单的操作MenuBar属性:none隐藏图形窗口的标准菜单,figure用法:2、使用命令建立用户菜单(1)直接键入figure,来创建一个图形窗口,所有参数采用默认(2)直接用:figure(s),s:为参数,s为数据时要为大于0的数据,数字代表第几幅图形(3)直接用:figure(‘属性名’,属性值)例如:figure(‘name’,‘样例’)创建一个标题名“样例”窗口(4)直接用:句柄变量=figure(属性名1,属性值1,属性名2,属性值2,…)通过对属性的操作来改变图形窗口形式。返回该窗口句柄来操作窗口。例如:figure('name'.'样例','position',[20,30,400,500])创建一个标题名“样例”位置在左下角坐标20,30宽400,高500的窗口。要关闭图形窗口,使用close函数,其调用格式为:close(窗口句柄)例183、菜单设计案例利用脚本编写程序完成菜单设计,使用MenuSelectedFcn
调用回调函数,完成标准二阶系统阶跃响应绘图,并存盘为menu1.m;二阶标准传递函数为:其中:ωn=1,ξ分别为0.15、1、2代表欠阻尼、临界阻尼和过阻尼。functionplotsysfig=uifigure;ax=uiaxes(fig);m=uimenu(fig,'Text','&绘制阶跃曲线');%建立一级菜单句柄mitem1=uimenu(m,‘Text’,‘标准二阶系统欠阻尼情况’,‘Checked’,‘on’);%二级mitem2=uimenu(m,'Text','标准二阶系统临界阻尼情况','Checked','on');mitem3=uimenu(m,'Text','标准二阶系统过阻尼情况','Checked','on');程序代码:mitem1.MenuSelectedFcn=@S1;%调用菜单函数S1mitem2.MenuSelectedFcn=@S2;mitem3.MenuSelectedFcn=@S3;functionS1(src,event)%标准二阶系统欠阻尼情况
cla(ax);G=tf(1,[1,0.3,1]);step(ax,G);grid(ax,"on");endfunctionS2(src,event)%标准二阶系统临界阻尼情况
cla(ax);G=tf(1,[1,2,1]);step(ax,G);grid(ax,"on");endfunctionS3(src,event)%标准二阶系统过阻尼情况
cla(ax);G=tf(1,[1,4,1]);step(ax,G);grid(ax,"on");endend运行结果根据三种图形函数,使用脚本编辑器编写下拉框菜单程序。例19(1)x=cos(s+t);y=sin(s+t);(-π≤x,y≤π)z=sin(s)*cos(t);(2)z=(x.^2/4^2-y.^2/5^2);(-8≤x,y≤8)(3)z=x.^2-y.^2(0≤x,y≤5)编程代码:fig=uifigure;%建立图窗fig.Name="下拉框菜单";%图窗标题gl=uigridlayout(fig);%使用表格布局UIgl.RowHeight={30,'1x'};%设定表格行高和列宽gl.ColumnWidth={80,'1x'};%设定表格列宽lbl=uilabel(gl);%设计菜单标题dd=uidropdown(gl);%设定菜单ax=uiaxes(gl);%设定坐标轴程序代码:ax.Layout.Row=2;%设定表格行数ax.Layout.Column=2;%设定表格列数
%创建菜单项lbl.Text="选择绘图选项:";%菜单标签dd.Items=["绘制函数曲面图""函数幕布网格图""函数等高线图"];%菜单项dd.ValueChangedFcn={@changePlotType,ax};%调用函数实现菜单功能functionchangePlotType(src,event,ax)%建立绘图函数type=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年护理专业临床护理操作技能考核题库
- 2025-2026年老年常见疾病预防与护理习题集
- 2025-2026年健身教练客户沟通技巧试题
- 2025-2026年重庆市部编版三年级音乐上册第10单元欣赏练习题
- 2025-2026年基因编辑技术在生物统计学中的应用测试题
- 2026年学校工勤人员工作总结(3篇)
- 初中信息技术教资面试专项训练题库
- 2026小学英语教师资格证面试结构化真题题库
- 2026初中历史教资面试教师资格证面试高频考题题库
- 2026初中音乐教资面试高频考题题库及解析
- 2026年机关事业单位工勤人员计算机操作员高级工考试试题及答案
- 4、《走进新能源汽车》教案 第四章 新能源汽车的未来不是梦 4课时
- 大连船舶重工集团笔试题目及答案
- 部编人教版一年级数学上册教案(全册)
- 2026年秋季学期苏教版一年级上册数学教学计划含进度表
- 蓄热式热力焚化炉阀门切换时序检查作业指导书
- 基坑深层水平位移监测施工方案及工艺方法
- 华为运输包装设计规范(内容系统全面)
- 2026年上半年教师资格证考试信息技术学科真题及解析附答案
- 隐翅虫皮炎防控科普
- 通辽医院医疗垃圾原位处理建设项目环境影响报告表
评论
0/150
提交评论