首页 > 编程语言 >Matlab GUI编程入门

Matlab GUI编程入门

时间:2023-06-07 14:23:53浏览次数:40  
标签:String GUI 编程 环节 handles Matlab 设置 组件 属性

  先吐槽下,我看得是出版社的优秀教材,虽说是二等奖,《Matlab与控制系统仿真实践》第3版,北京航空航天大学出版社 赵广元编著,想着入门,找本国内的书快速入门。谁知道一个上午就这么过去了。以一个控制系统典型环节演示为例,课本从P95开始:

一、准备工作,设置下显示组件的名称与图标HOME-preferences-MATLAB-GUIDE,将右侧的show names in component palette的复选框勾选中;这一步中漏掉了关键的-MATLAB-GUIDE,这也可以吗?

二、在matlab的命令窗口输入guide,

打开gui创建界面,将需要的组件拖到合适的位置,可以拖动改变位置和大小,成品如下:

  左上角的是Axes组件,用来显示生成的波形

  右上角上边是static text组件,显示提示信息,下边是Listbox组件,环节列表展示,可以选中环节

  左下角上层是Edit text组件,下层是Panel组件,用来接受用户输入的代码

  右下角是三个垂直排列的Push Button组件,通过这些按钮完成相应的操作

三、Axes组件的Tag属性设置为myAxes即可

四、static text组件Tag属性设置为txtDemo;String属性设置为 典型环节演示。ListBox组件的Tag属性设置为

比例环节
惯性环节
比例微分环节
比例积分环节,

切记,必须将Max属性设置为2.0或更大些,否则,不能输入多行数据,

五、Panel组件的Tag属性设置为uipanel, Title设置为空;Edix Text主要用来输入和显示文本,Tag属性设置为strCode,String属性设置为空,书上的设置是胡乱写的,不用管他,切记,必须将Max属性设置为2.0或更大些,否则,不能输入多行数据,

六、PushButton1Tag属性设置为btnDraw,String属性设置为定制曲线,tooltip属性设置为定制

PushButton2Tag属性设置为pushbutton2,String属性设置为清除,tooltip属性设置为清除
PushButton3Tag属性设置为btnClose,String属性设置为关闭,tooltip属性设置为关闭窗口

七、共需要四个回调函数,可以简单理解,就是在特定动作下调用发生的函数,这里定制曲线按钮、清除按钮、关闭按钮和列表框需要写回调函数,方法是,右击组件

单击Callback自动跳转到编辑窗口中的对应代码函数的位置,输入对应的内容即可:

listBox组件回调函数代码

 
 1 function lstBox_Callback(hObject, eventdata, handles)
 2 v = get(handles.lstBox, 'value');
 3 switch v
 4     case 1,
 5         str1 = 'nump = 3; denp = 1;';
 6         str2 = 't=0:0.1:10;'
 7         str3 = '[y,t,x]=step(nump, denp, t);';
 8         set(handles.strCode, 'String', char(str1,str2,str3));
 9         set(handles.uipanel, 'Title','比例环节');
10     case 2,
11         str1 = 'numg = 1; deng = [0.2 1];';
12         str2 = 't=0:0.1:10;'
13         str3 = '[y,t,x]=step(numg, deng, t);';
14         set(handles.strCode, 'String', char(str1,str2,str3));
15         set(handles.uipanel, 'Title','惯性环节');
16     case 3,
17         str1 = 'K = 3; T = 0.5; N=5; numpd=[K*T K]; denpd=[T/N 1];';
18         str2 = 't=0:0.1:10;'
19         str3 = '[y,t,x]=step(numpd, denpd, t);';
20         set(handles.strCode, 'String', char(str1,str2,str3));
21         set(handles.uipanel, 'Title','比例微分环节');
22     case 4,
23         str1 = 'K = 4; T = 0.2; N=5; numpi=[K*T K]; denpi=[T 0];';
24         str2 = 't=0:0.1:10;'
25         str3 = '[y,t,x]=step(numpi, denpi, t);';
26         set(handles.strCode, 'String', char(str1,str2,str3));
27         set(handles.uipanel, 'Title','比例积分环节');
28 end

第一行是已有的,其他的都要输入。

以下是btnDraw按钮的回调函数

 1 function btnDraw_Callback(hObject, eventdata, handles)
 2 try
 3     str = char(get(handles.strCode, 'String'));
 4     str0 = [];
 5     for ii = 1:size(str,1)
 6         str0 = [str0, deblank(str(ii,:))];
 7     end
 8     eval(str0);
 9     axes(handles.myAxes);
10     plot(x,y);
11 catch
12     errordlg('请重新检查输入数据!');
13 end

第一行是已有的,其他的都要输入。

以下是

pushbutton2按钮的回调函数:
1 function pushbutton2_Callback(hObject, eventdata, handles)
2 set(handles.strCode, 'String','');

第一行是已有的,其他的都要输入。

以下是btnDraw按钮的回调函数:

1 function btnClose_Callback(hObject, eventdata, handles)
2 btnDraw_Callback(hObject, eventdata, handles)
3 close(gcf);

第一行是已有的,其他的都要输入。

八、运行首界面:

选中比例环节,运行已有代码,生成的图像:

选中惯性环节,运行已有代码,生成的图像:

选中比例微分环节,运行已有代码,生成的图像:

选中比例积分环节,运行已有代码,生成的图像:

直接输入代码,生成的图像:

本来很简单的,被书上搞得好像很高深一样,这样的书不要也罢。

标签:String,GUI,编程,环节,handles,Matlab,设置,组件,属性
From: https://www.cnblogs.com/guochaoxxl/p/17463150.html

相关文章

  • 实验六 turtle绘图与python库应用编程体验
    '''task1_1.py'''fromturtleimport*defmove(x,y):penup()goto(x,y)pendown()defdraw(n,size=100):foriinrange(n):fd(size)left(360/n)defmain():pensize(2)pencolor('red&#......
  • FIT9136 算法编程基础
    FIT9136AlgorithmsandProgrammingFoundationsinPythonAssignment3May20231TableofContents1.KeyInformation2.Instruction2.1.UserClass2.2.CustomerClass2.3.AdminClass2.4.ProductClass2.5.OrderClass2.6.UserOperationClass2.7.CustomerOperation......
  • Apache Solr 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介ApacheSolr是一个开源搜索服务器。Solr是用Java语言开发的,主要基于HTTP和ApacheLucene实现。存储在ApacheSolr中的资源存储为Document对象。ApacheSolr入门教程-从基本概念开始,简单易学地了解ApacheSolr,其中包括概述,搜索引擎基础知识,Windows环境,Had......
  • 实验五 文件应用编程
    task6withopen('data6.csv','r',encoding='gbk')asf:data=f.readlines()data.remove('原始数据\n')data0=[]foriindata:ifi[-1]=='\n':i=i[:-1]data0.append(float(i))print('原始......
  • 实验7 面向对象编程与内置模块
    task1classAccount:def__init__(self,name,account_number,initial_amount=10):self._name=nameself._card_no=account_numberself._balance=initial_amountdefdeposit(self,account):self._balance+=accountdefwit......
  • 实验7 面向对象编程与内置模块
    实验任务1task1.py1classAccount:23def__init__(self,name,account_number,initial_amount=10):4self._name=name5self._card_no=account_number6self._balance=initial_amount7defdeposit(self,amount):......
  • 实验五 文件应用编程
    task6实验源码1importcsv23title=['原始数据','四舍五入后的数据']45lst=[]6yuan_lst=[]7hou_lst=[]8withopen('data6.csv','r')asf:9read_lst=f.readlines()10foriinrange(1,len(read_l......
  • 实验7 面向对象编程与内置模块
    一、实验结论:1.实验任务1:task1.py程序源码:1'''2银行账户3数据:持卡人姓名、账号、当前余额4操作:取款、存款、打印账户信息、返回账户余额5'''67classAccount:8'''一个模拟银行账户的简单类'''910def__init__(self,name,account_nu......
  • 实验五 文件应用编程
    task6.py1withopen('data6.csv','r',encoding='gbk')asf:2data1=f.read().split('\n')3deldata1[0]4foriinrange(len(data1)):5data1[i]=eval(data1[i])6data1[i]=float(data1[i])7......
  • MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据|附代码数据
    全文链接:http://tecdat.cn/?p=2655最近我们被客户要求撰写关于偏最小二乘回归(PLSR)和主成分回归(PCR)的研究报告,包括一些图形和统计输出。此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性当存在大量预测变量时,PLSR和PCR都是对因变量建模......