matlab GUI与Simulink数据传输

matlab GUI与Simulink数据传输

  • Simulink模型搭建
  • matlab GUI界面搭建
  • 两者间的通信

Simulink模型搭建

  1. 搭建模型
    matlab GUI与Simulink数据传输_第1张图片

  2. 设置Scope中数据的存储(变量名为ScopeData,存储格式为Array)
    matlab GUI与Simulink数据传输_第2张图片

  3. 设置完成后,运行该模型,Scope的图像数据保存至ScopeData变量中。

matlab GUI界面搭建

  1. 在matlab命令行窗口中输入“guide”,进入GUI搭建界面
    matlab GUI与Simulink数据传输_第3张图片
  2. 搭建GUI界面
    matlab GUI与Simulink数据传输_第4张图片

两者间的通信

Simulink模型与GUI界面之间实现如下功能:

  1. 在GUI界面中的可编辑文本中填入正弦函数的幅值和偏移量;
  2. 点击GUI界面中的“仿真”按钮时,实现如下功能:
    a. 从GUI界面向Simulink模型的数据传输:将在GUI界面中填入的幅值和偏移量数据分别传输给Simulink中Sine Wave模块的Amplitude和Bias参数;
    b. 从workspace向Simulink模型的数据传输:将保存的Scope模块的图像数据传输给GUI界面的坐标区并显示

为实现上述功能,编写GUI界面中“仿真”按钮的回调函数

A = char(get(handles.Amplitude,'string'));  %获取填入的幅值
B = char(get(handles.Bias,'string'));       %获取填入的偏移
set_param('SineDisplay/Sine Wave','Amplitude',A);  %设置Simulink模块中的幅值参数
set_param('SineDisplay/Sine Wave','Bias',B);       %设置Simulink模块中的偏移参数
options = simset('SrcWorkspace','current'); %设置仿真空间
sim('SineDisplay',[],options);              %第一个参数为模型名,第二个参数为模型开始和结束时间组成的向量([]表示按照模型设置的运行时间,第三个参数为仿真空间)
axes(handles.SineAxes);                     %将handles.SineAxes设置为当前坐标系
plot(ScopeData(:,1),ScopeData(:,2));        %利用Scope的图形数据绘制图形
grid on

运行GUI界面,得到如下结果:
matlab GUI与Simulink数据传输_第5张图片

  1. 获取Simulink模型中模块的参数名:
 get_param('SineDispaly/Sine Wave','objectparameters');
  1. 运行GUI界面时,Simulink模型必须在打开状态

你可能感兴趣的:(MATLAB,matlab)