我是靠谱客的博主 繁荣画笔,最近开发中收集的这篇文章主要介绍Matlab的GUI界面与工作空间以及simulink的数据传递1.GUI界面从工作空间读取或者写入数据2.GUI界面从simulink读取或者写入数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.GUI界面从工作空间读取或者写入数据

常用以下代码:
将workspace中的K赋值给A,其中K为value数值,需要转换

A=evalin('base','K');
set(handles.edit1,'String',num2str(A));

将b赋值给A并放入baseworkspace,其中K为String字符串,需要转换

var=get(handles.edit2,'String');
assignin('base','K',str2num(var));

2.GUI界面从simulink读取或者写入数据

如果Simulink的数值没有存储在工作空间,那么如何在GUI界面中直接获取Simulink的数值呢?

方法1:利用函数跨空间传递参数

(1)了解simulink与workspace之间的数据传递

利用 matlab 提供的 set_param()函数跨空间设置模型仿真参数,
函数调用格式为:set_param(‘模型名/模块名’,属性名 1,属性值 1,属性名 2,属性值 2…)
例如:修改simulink文件名为“M1”的直流电压模块“DC Voltage Source”的数值为120
simulink文件名
直流电压模块
首先,获取模块的各参数名
在命令行窗口输入

 get_param('M1/DC Voltage Source','ObjectParameters')

参数名

而后,可以看到电压幅值的参数名字为“Amplitude
那么输入

set_param('M1/DC Voltage Source','Amplitude','120')

即可修改其电压幅值为120,其格式为字符串‘string

(2)改变simulink模型的运行空间

通过 simulink 中提供的simset( ) 函数来指定模型运行空间,该函数可以让用户自定义 simulink 模型的运行空间(默认是 BaseWorkspace),只要将 simulink 设置为从当前工作空间运行,那么就可解决 GUI 函数空间和仿真模型空间不统一的问题。

(3)GUI界面与simulink模型数据传递的例子

例如:我们想通过GUI界面来修改电阻,电感的数值
simulink界面
通过建立如下GUI界面

GUI界面

对“仿真”按钮的回调函数做如下修改

 axes(handles.axes1);
 options= simset('SrcWorkspace','current');
 a = char(get(handles.edit1,'string'));
 b = char(get(handles.edit2,'string'));
 set_param('M1/Series RLC Branch','Inductance',b);
 set_param('M1/Series RLC Branch','Resistance',a);

因为 由于编辑框中获取的string 值一般是 cell 类型,所以对可编辑文本string转化为char格式,再将该值赋值给相应模块的相应数值。
这是对simulink的写入,接着,我们要从simulink中读出scope到GUI界面中。

 sim('M1',[],options);

则是对文件名为“M1”的仿真文件进行仿真
其中,第一参数是模型名称;第二个参数是向量,指定仿真开始和结束时间,如果设置为[],则使用在 Simulink 中
设置的始末时间; 第三个参数设置 Simulink 仿真选项。
最后的代码为

 axes(handles.axes1);
 options= simset('SrcWorkspace','current');
 a = char(get(handles.edit1,'string'));
 b = char(get(handles.edit2,'string'));
 set_param('M1/Series RLC Branch','Inductance',b);
 set_param('M1/Series RLC Branch','Resistance',a);
 options= simset('SrcWorkspace','current');
 sim('M1',[],options);
 plot(yout(:,1),yout(:,2));
 grid on

其中

`options= simset('SrcWorkspace','current');`

表示:指定模型从当前空间运行
‘current’表示当前空间运行,‘base’从基本空间运行,‘parent’表示从上级空间运行

sim('M1',[],options);

使用 sim()函数对模型从当前 GUI 函数空间进行仿真
第一参数是模型名称;第二个参数是向量,指定仿真开始和结束时间,如果设置为[],则使用在 Simulink 中
设置的始末时间;第三个参数设置 Simulink 仿真选项

 plot(yout(:,1),yout(:,2));

表示从SCOPE中获取数据。
最后结果为:
UI设计结果

最后

以上就是繁荣画笔为你收集整理的Matlab的GUI界面与工作空间以及simulink的数据传递1.GUI界面从工作空间读取或者写入数据2.GUI界面从simulink读取或者写入数据的全部内容,希望文章能够帮你解决Matlab的GUI界面与工作空间以及simulink的数据传递1.GUI界面从工作空间读取或者写入数据2.GUI界面从simulink读取或者写入数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部