m文件访问simulink模型s-function函数参数相互修改

matlab m文件中如何调用simulink模块

参照:https://zhidao.baidu.com/question/445088701.html
在m文件里调用模型mdl关键是用sim命令。
[ t, x, y ] = sim( model, timespan, options, ut)
[ t, x, y1, y2, …, yn] = sim( model, timespan, options, ut)
(1)model:需要进行仿真的系统模型框图名称;
(2)timespan:系统仿真的时间范围(起始至终止时间),可有如下形式:
tFinal:设置仿真终止时间。仿真起始时间默认为0;
[tStarttFinal]:设置起始时间(tStart)与终止时间(tFinal);
[tStartOutputTimestFinal]:设置起始时间(tStart)与终止时间(tFinal),并且设置仿真返回的时间向量[tStartOutputTimestFinal],其中tStart、OutputTimes、tFinal必须按照升序排列。
(3)options:由simset命令所设置的除仿真时间外的仿真参数;
(4)ut:表示系统模型顶层的外部可选输入。ut可以是MATLAB 函数。可以使用多个外部输入ut1、ut2、…。
(5)t:返回系统仿真的时间向量。
(6)x:返回系统仿真的状态变量矩阵。
(7)y:返回系统仿真的输出矩阵。按照顶层输出Outport模块的顺序输出。如果输出信号为向量输出,则输出信号具有与此向量相同的维数。
(8)y1,…,yn:返回多个系统仿真的输出。

在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数

参照博文:https://blog.csdn.net/u014077947/article/details/79613585

在做研究的时候我们经常需要对模型的参数就行相应的选择,然而有没有觉得每次更改一个参数都需要运行一次仿真程序觉得很无聊呀,运行完程序还要看效果怎么样,然后再根据效果来调整参数,再次运行程序,如此反复。

下面我介绍一种在MATLAB中利用M文件实现对Simulink中S函数的程序实现自动调参数的功能。前面的一些准备工作可以参数我的这篇博文在Simulink中对S 函数进行参数传递的三种方法。

1、在Simulink中搭建好模型文件。
2、按照链接博客中的方法设置好模型文件中的S函数模块。
3、用M文件编写相应的程序,设置好仿真时间,和变量如何变化等等。
4、运行M文件,用程序自动给你调参数,选择出最好的参数吧。

function  startsim2()
for a=5:1:6              %这里可以用来设置循环次数,也可以作为每次循环要传递的不同参数值
    for b=20:1:21
                 set_param('test/S-Function4','a',num2str(a));    %%在模块名和单引号之后不能有空格,否则会提示找不到相应的模块
                 set_param('test/S-Function4','b',num2str(b));         
                 %%set_param('Model_name', 'SimulationCommand', 'start');%%用了下面的语句就不要使用这条语句,否则也会报错:提示不能在同一个仿真中同时打开两个相同的模型
                 simOut = sim('test',...
                'StopTime', '2', ... 
                'ZeroCross','on', ...
                'SaveTime','on','TimeSaveName','tout', ...
                'SaveState','on','StateSaveName','xoutNew',...
                'SaveOutput','on','OutputSaveName','youtNew',...
                'SignalLogging','on','SignalLoggingName','logsout');    %%每行后面的...是为了表示分行所用的,参数应该是可以不用传递这么多的,但是现在还不是特别清楚这个变量的含义
                 x=simOut.get('x');   %%这条语句用来获取Simulink中的数据
                 %这里根据自己的需要编写相应的程序,可以根据获取的结果来更改下次
                 %运行的参数。
                 set_param('test', 'SimulationCommand', 'stop');  %结束仿真
    end
end
end

m文件访问simulink模型s-function函数参数相互修改_第1张图片

simulink 封装

子系统的封装的意义
子系统封装技术可以让一个子系统有自己的特点。封装后的子系统可以有自己的图标、自己的参数和具有功能描述的控制对话框,甚至自己的help文档,同时参数的修改更为方便(不用深入子系统,只需在对话框中修改便可),内部结构也不易被修改。

封装技术的简要介绍
封装是在Mask Editor中进行的。要打开Mask Editor,需要两步:①选中要封装的子系统;②选择菜单Edit->Edit Mask或者右键菜单中的Edit Mask。Mask Editor的样子如下:
m文件访问simulink模型s-function函数参数相互修改_第2张图片
Parameters
m文件访问simulink模型s-function函数参数相互修改_第3张图片

你可能感兴趣的:(Matlab/Simulink)