【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

03-18 1027阅读

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习!

一、Simulink与Matlab接口

1、Matlab工作区变量设置模块参数

Matlab工作区的变量可以作为模块的设置参数

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

2、Matlab工作区变量作为输入信号

使用From Workspace模块将工作区变量作为系统的输入信号:

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

编辑器输入信号变量格式:(不是直接输入,只是一个格式)

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

命令行窗口输入如下代码:

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

仿真得到如下结果:

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

3、信号输出到Matlab工作区

有两种方式:

①利用scope模块的设置,将数据记录到工作区,可设置变量名称和保存格式。

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

②利用To workspace模块,可设置相关输出参数。

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

4、Matlab Function模块

可进行函数编辑实现特定功能:(一般涉及代码有啥需求都交给GPT写,自己再进行调试、修改、完善)

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真


二、使用命令行进行仿真

使用命令行可编写运行系统仿真的脚本文件,可实现在同一系统中采用不同仿真参数进行仿真,不必一次又一次更改模块参数点击“Run”进行仿真。

1、sim命令进行动态系统仿真

两种语法格式:

simOut =sim('model','ParameterName1',Value1,'ParameterName2',Value2...)
simOut =sim('model',ParameterStruct)

第一个参数即模型名,后面依次是参数名,参数值,或者直接以参数结构体代替。若仿真参数设置为空,则使用默认值。

参数分仿真参数和模块参数!

①仿真参数有StartTime、StopTime(仿真时间也可用切片形式描述)、Solver求解器以及MaxStep最大仿真步长、SaveState是否保存状态变量、SaveOutput是否保存输出变量等。也可在命令行使用simget得到系统仿真参数的结构体变量:(各个变量的意义可自行查阅)

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

simget的语法格式如下:

parameterStruct=simget('model')  %获得模型所有仿真参数的结构体变量
value = simget('model',parameter) %获得模型特定仿真参数取值
value = simget(parameterStruct,parameter) %获得仿真参数结构体变量种某个变量的取值

simset可获得所有仿真参数的可能选项取值:

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

这些取值选项,可用simset的如下3种语法进行设置:(simset返回的是一个结构体变量)

parameterStruct = simset('parameter1',value1,'parameter2',value2,...) %设置仿真参数值
parameterStruct = simset(OldparameterStruct,'parameter1',value1,'parameter2',value2,...) %修改已存在结构体中的变量
parameterStruct = simset(OldparameterStruct1,parameterStruct2) %新旧结构体变量合并,相同项用新结构体的值覆盖
simset

②模块参数可在命令行窗口输入下面命令,输出结果configSetNames可得到所有参数名称:

%注:命令行使用
configSet = getActiveConfigSet('model')
configSetNames = get_param(configSet, 'ObjectParameters')

【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真

simOut为仿真输出结果,是一个类,可用下面命令进一步查看结果:

simOut.find('VarName')找出仿真结果中VarName这一项
simOut.get('VarName')获得仿真结果中VarName这一项
simOut.who返回所有仿真变量(包括工作区里的)

2、simplot命令

我们常使用Scope模块,最大的优点是可通过对Scope的操作,对系统输出方便观测,plot等绘图命令都远远不及。

simplot可输出与scope相似的图形,语法格式如下:

simplot(data); %一般由Output模块、To workspace模块等输出,可为矩阵、向量、结构体等
simplot(time, data); %time为仿真结果的输出时间向量,若data类型中本身包含时间,则此项可忽略

示例如下:

t=0:0.1:10;
simInput=[t',sin(0:0.1:10)'];
[t,x,y]=sim('systemTest',10,[],simInput);
simplot(t,y)

 往期精彩

STM32专栏(付费9.9)【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真http://t.csdnimg.cn/E2F88

OpenCV-Python专栏(付费9.9)【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真http://t.csdnimg.cn/zK1jV

AI底层逻辑专栏(付费9.9)【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真http://t.csdnimg.cn/zic0f

机器学习专栏(免费)【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真http://t.csdnimg.cn/SjIqU电机控制专栏(免费)【Simulink系列】——Simulink与Matlab接口&使用命令行进行仿真http://t.csdnimg.cn/FNWM7 

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]