matlab GUI与Simulink数据传输

Simulink模型搭建

  1. 搭建模型
    在这里插入图片描述

  2. 设置Scope中数据的存储(变量名为ScopeData,存储格式为Array)
    在这里插入图片描述

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

matlab GUI界面搭建

  1. 在matlab命令行窗口中输入“guide”,进入GUI搭建界面
    在这里插入图片描述
  2. 搭建GUI界面
    在这里插入图片描述

两者间的通信

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

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

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

% A = '1';
% B = '2';
% load_system('SineDisplay');  %载入 SineDisplay.slx 模型(不需要这行代码)

% A = get(handles.Amplitude,'string');  %获取填入的幅值
Amplitude = findobj('tag','Amplitude');  % 解决问题:此类型的变量不支持使用点进行索引
A = get(Amplitude,'string');
% B = get(handles.Bias,'string');       %获取填入的偏移
Bias = findobj('tag','Bias');  % 解决问题:此类型的变量不支持使用点进行索引
B = get(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设置为当前坐标系
SineAxes = findobj('tag','SineAxes');  % 解决问题:此类型的变量不支持使用点进行索引
axes(SineAxes);
plot(ScopeData(:,1),ScopeData(:,2));        %利用Scope的图形数据绘制图形
grid on

运行GUI界面,得到如下结果:
在这里插入图片描述

使用步骤

  1. 打开matlab,进入到文件所在路径下;

在这里插入图片描述

  1. 双击运行 simulink 模型文件:SineDisplay.slx;
  2. 双击运行 GUI 文件:SineFunc.fig;
  3. 在 SineFunc.fig 中设置“幅值”和“偏移”,点击“仿真”,在左侧即可显示 sin 函数的图像。

报错问题

  • 现象:直接用A = get(handles.Amplitude,'string'); %获取填入的幅值获取句柄变量时,运行.m文件可正常运行,而直接打开.fig文件时会报 “此类型的变量不支持使用点进行索引” 的错误
  • 解决方法:先找到这个句柄对象,再进行赋值
    Amplitude = findobj('tag','Amplitude');  % 解决问题:此类型的变量不支持使用点进行索引
    A = get(Amplitude,'string');
    

  • 以上操作使用的 matlab 版本为 2018a;
  • 获取Simulink模型中模块的参数名:
 get_param('SineDisplay/Sine Wave','objectparameters');
  • 运行GUI界面时,Simulink模型必须在 打开状态
  • 本文对应的全套文件已上传至资源中,如果感兴趣,可以去下载运行。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值