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

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

一、Simulink与Matlab接口

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

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

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

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

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

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

仿真得到如下结果:

3、信号输出到Matlab工作区

有两种方式:

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

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

4、Matlab Function模块

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


二、使用命令行进行仿真

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

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

两种语法格式:

Matlab 复制代码
simOut =sim('model','ParameterName1',Value1,'ParameterName2',Value2...)
simOut =sim('model',ParameterStruct)

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

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

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

simget的语法格式如下:

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

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

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

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

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

Matlab 复制代码
%注:命令行使用
configSet = getActiveConfigSet('model')
configSetNames = get_param(configSet, 'ObjectParameters')

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

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

2、simplot命令

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

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

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

示例如下:

Matlab 复制代码
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)http://t.csdnimg.cn/E2F88

OpenCV-Python专栏(付费9.9)http://t.csdnimg.cn/zK1jV

AI底层逻辑专栏(付费9.9)http://t.csdnimg.cn/zic0f

机器学习专栏(免费)http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)http://t.csdnimg.cn/SjIqU电机控制专栏(免费)http://t.csdnimg.cn/FNWM7

相关推荐
旧故新长7 分钟前
版本控制和idea简体中文教程
java·开发语言·intellij-idea
疯一样的码农7 分钟前
使用 Maven 构建一个简单的 Java 项目
java·开发语言·maven
易风有点疯17 分钟前
Python:序列化
开发语言·python
Biomamba生信基地32 分钟前
R语言基础| 时间序列分析
开发语言·r语言·kotlin·编程
Promising_GEO33 分钟前
使用R语言绘制简单地图的教程
开发语言·python·r语言
微尘835 分钟前
C++条件编译指令:#if、#elif、#ifdef、#ifndef、#elifdef、#elifndef、#else、#endif
开发语言·c++
许乌有36 分钟前
matlab基础使用
开发语言·matlab
湫ccc1 小时前
《Python基础》之函数的用法
开发语言·python
lly2024061 小时前
C# 类(Class)
开发语言
梦深时有鹿2 小时前
C#基础练习61-65
开发语言·c#