《GUI指导教程系列(9):在GUI中调用含未知参数的Simulink模型》由会员分享,可在线阅读,更多相关《GUI指导教程系列(9):在GUI中调用含未知参数的Simulink模型(8页珍藏版)》请在金锄头文库上搜索。
1、.本节教程主要向大家演示使用三种不同的方法,在GUIDE中嵌入Simulink模块。关于原理大家可以参考http:/ functionrunSimulinkModel(m,c,k)2 %即使在函数中有模型的参数输入或定义,但是Simulink默认只使用基本状态空间的数据3 sim(mass_spring);复制代码5、由于函数状态空间和基本状态空间的变量和数据不兼容,这就增加了在GUIDE中调用Simulink模型的难度。在接下来的教程中,我们将讨论使用三种方法来解决这个问题!GUIDE调用Simulink方法一:主要使用set_param函数设置仿真参数,具体参考http:/ axes(ha
2、ndles.axes1)%将axes1设置为当前坐标系,便于绘制仿真结果5 m=str2num(get(handles.mass_editText,String);%获取质量6 c=str2num(get(handles.damping_editText,String);%获取阻尼7 k=str2num(get(handles.spring_editText,String);%获取劲度系数%配置Simulink仿真选项,使其使用当前工作空间8 %设置Simulink从当前工作空间运行9 options=simset(SrcWorkspace,current);%使用sim()函数对模型进行仿真
3、10 %第一参数是模型名称11 %第二个参数是向量,指定仿真开始和结束时间12 %如果设置为,则使用在Simulink中设置的始末时间13 %第三个参数设置Simulink仿真选项14 sim(mass_spring,options);%绘制图形%模型中有一个OUT模块,使用它我们可以设置输出变量为tout和yout15 %然后就可以直接调用Simulink的获取仿真结果tout和yout进行绘图了16 plot(tout,yout)17 xlabel(Time)18 ylabel(Displacement)19 Title(2ndOrderMassSpringSystem)20 gridon
4、复制代码3、保存修改,再运行GUI。在文本框中输入“质量-弹簧-阻尼”系统的三个参数(注意不要输入字母、符号或负数),然后点击“Simulate!”按钮,看看我们的劳动成果吧!方法三:1、同样在GUIDE中打开未经有修改的simulink_gui.fig文件2、双击“Simulate!”按钮打开属性查看器,将Callback属性修改为simulateButton。以后每次点击“Simulate!”按钮时,则GUI只响应simlateButton中定义的操作,而不是simulate_pushbutton_Callback。注意:simulateButton是另外编写的一个M脚本文件,MATLAB
5、中脚本文件(不同于函数文件)中的所有变量和数据共用基本状态空间。3、其实simulateButton.m脚本的代码如下21 %注意到simulateButton.m文件不是一个M函数(以function开头的为M函数),而是M脚本!22 %Matlab脚本将在基本工作空间运行,它涉及到所有的变量和数据都保存在基本工作空间!23 %而Simulink所有参数默认调用基本工作空间的数据,所以此时我们就可以直接使用sim()函数进行模型仿真了!clearall%获取当前GUI窗体的句柄24 h=gcf;25 %获取GUI的handles结构体,它包含了所有控件的信息26 handles=guidat
6、a(h);%选择当前坐标系,由于后面的绘图27 axes(handles.axes1);%获取文本框中的Simulink仿真参数28 m=str2num(get(handles.mass_editText,String);%注意获取的string是一个字符串,需要使用str2num将其转换为数值29 c=str2num(get(handles.damping_editText,String);30 k=str2num(get(handles.spring_editText,String);%仿真系统31 sim(mass_spring);%绘制仿真结果图形32 plot(tout,yout)33 xlabel(Time)34 ylabel(Displacement)35 Title(2ndOrderMassSpringSystem)36 gridon复制代码其实方法二的一种变形就是,跨空间计算Simulink模型所需要的参数,比如evalin(base,m=5),就表示在基本工作空间运行m=5这条命令。4、保存下对GUI的修改,验证下我们的成果吧!.6