8.1 M语言控制模型的仿真
M语言与Simulink结合的方式:
- 在Simulink模型或模块中使用回调函数
- 在M语言中调用与模型相关的命令,控制模型的建立,设置模块的属性,增删信号线,以及运行模型仿真等
为了调用和操作Simulink模型,M语言中最常用的函数有sim、set_param、get_param。
8.1.1 sim控制模型仿真及参数配置
(1)simOut=sim('model','ParameterName1',value1,'ParameterName2',value2,...);
对名为model的模型进行仿真,仿真时将其参数通过[参数名,参数值]的方式进行配置。
simOut是一个Simulink.SimulationOutput对象,包含了仿真的输出:仿真采样时间、状态值和信号值。
sim_out=sim('mymodel','SimulationMode','Normal','stoptime','30');
(2)simOut=sim('model',ParameterStruct);
仿真时通过结构体变量配置参数。
param_struct=struct('SimulationMode','Normal','stoptime','30'); sim_out=sim('mymodel',param_struct);
(3)simOut=sim('model',ConfigSet);
仿真时通过配置集合来配置参数。
getActiveConfigSet() %获取模型的配置集合变量 attachConfigSet() %绑定参数配置集合到模型 setActiveConfigSet() %激活模型的某个参数配置
对ConfigSet对象进行参数获取/设定也使用set_param()/get_param()。
(4)sim('model');
当不需要该表模型的参数配置,也不关心模型仿真的输出时,可以直接sim。
使用上述命令运行仿真时,并不修改模型的配置,而是通过sim函数暂时设置某个参数应用于此次仿真,仿真后模型的配置参数仍然保持之前的设定不受影响。
当希望观察模型参数配置不同对仿真结果有何影响时,直接使用多个sim语句带上不同的参数配置作为M脚本运行即可。
示例:
Data Export选Array。
param_struct1.SaveState = 'on'; param_struct1.StateSaveName = 'xout1'; param_struct1.SaveOutput = 'on'; param_struct1.OutputSaveName = 'yout1'; param_struct1.SolverType = 'Fixed-step'; param_struct1.Solver = 'FixedStepDiscrete'; param_struct1.FixedStep = '0.01'; sim_out1 = sim('mymodel',param_struct1); param_struct2 = param_struct1; param_struct2.FixedStep = '2'; param_struct2.OutputSaveName ='yout2'; sim_out2 = sim('mymodel',param_struct2); t1 = get(sim_out1, 'tout'); t2 = get(sim_out2, 'tout'); y1 = get(sim_out1, 'yout1'); y2 = get(sim_out2, 'yout2'); figure; title('Sim a model with different config parameters'); subplot(211); plot(t1,y1); xlabel('time(s)'); ylabel('yout1'); subplot(212); plot(t2,y2); xlabel('time(s)'); ylabel('yout2');
8.1.2 set_param控制模型仿真过程
set_param(object,param1,value1,param2,value2,...);
- object:模型或模块对象,既可以使用路径表示,也可以使用句柄表示;
- paramX:模型或模块的参数名;
- valueX:对应于paramX的参数值。
获取参数则使用get_param(object,param),每次只能获取一个参数的值。
有一个参数名为SimulationCommand,可由set_param设置不同的值来控制模型仿真的过程。
值 | 功能说明 |
start | 启动模型仿真 |
pause | 暂停模型仿真 |
step | 单步执行仿真 |
continue | 继续模型放着 |
stop | 停止模型仿真 |
例:
来源:https://www.cnblogs.com/dingdangsunny/p/12248451.html