目录
使用 Simulink.SimulationInput 对象为仿真设置模块参数
sim函数的功能是对 Simulink 模型进行仿真。
语法
simOut = sim(simIn)
simOut = sim(simIn,Name,Value)
simOut = sim(modelName)
simOut = sim(modelName,Name,Value)
simOut = sim(modelName,paramStruct)
simOut = sim(modelName,configSet)
说明
Simulink.SimulationInput
对象语法
simOut = sim(simIn) 根据在一个或多个 Simulink.SimulationInput 对象上定义的属性,运行 Simulink® 模型的一个或多个仿真。
-
如果 simIn 是标量 Simulink.SimulationInput 对象,则 simOut 是标量 Simulink.SimulationOutput 对象。
-
如果 simIn 是 Simulink.SimulationInput 对象数组,
则 simOut 是 Simulink.SimulationOutput 对象数组。
可以使用 SimulationInput 对象来配置仿真的选项和输入,包括:
-
要仿真的模型
-
外部输入数据的源变量或文件
-
用于仿真的模块参数值
-
用于仿真的模型配置参数值
当 SimulationInput 对象的属性修改模型或模块参数值时,该值将在仿真期间修改,并在仿真结束时还原。
当使用 SimulationInput 对象配置程序化仿真时,您可以轻松地从使用 sim 函数转换为使用其他函数,如 parsim 和 batchsim。
simOut = sim(simIn,Name,Value) 根据 Simulink.SimulationInput 对象 simIn 上定义的属性仿真模型,并使用由一个或多个名称-值参数指定的附加选项。
模型名称语法
simOut = sim(modelName) 使用模型的当前配置参数和模块参数值仿真由 modelName 指定的模型。
-
如果模型启用了单一仿真输出参数,则 simOut 是一个 Simulink.SimulationOutput 对象。
-
如果模型未启用单一仿真输出参数,则 simOut 是一个包含仿真时间的向量。有关详细信息,请参阅不推荐返回多个输出参数。
simOut = sim(modelName,Name,Value) 仿真由 modelName 指定的模型,并使用由一个或多个名称-值参数指定的选项。例如,通过将参数名称和值指定为名称-值参量,可以修改仿真的模型配置参数值。
当通过向 sim 函数提供输入来修改模型配置参数时,这些更改将在仿真期间应用,并在仿真结束时还原。
simOut = sim(modelName,paramStruct) 使用由结构体 paramStruct 指定的模型配置参数值仿真由 modelName 指定的模型。
simOut = sim(modelName,configSet) 使用配置集 configSet 中的模型配置参数值仿真由 modelName 指定的模型。
示例
使用 Simulink.SimulationInput
对象为仿真设置模块参数
使用 SimulationInput 对象修改模型中模块的参数值。打开模型。
openExample("simulink_general/sldemo_househeatExample")
为此模型创建 SimulationInput 对象。
mdl = "sldemo_househeat";
simIn = Simulink.SimulationInput(mdl);
通过修改 Set Point 模块的值参数,将调温器的设定值更改为 300。
simIn = setBlockParameter(simIn,"sldemo_househeat/Set Point",...
"Value","300");
对模型进行仿真。
out = sim(simIn);
使用当前参数设置仿真模型
对处于现有状态的模型 vdp 进行仿真,不考虑它是尚未加载还是已加载但有尚未保存的更改。
simOut = sim("vdp");
使用在结构体中指定的选项仿真模型
使用在结构体中指定的模型配置参数值仿真模型 vdp。
创建结构体 paramStruct。将模型配置为使用变量名称 xoutNew 记录状态。
paramStruct.SaveState = 'on';
paramStruct.StateSaveName = 'xoutNew';
向结构体中添加更多字段,以将模型配置为使用变量名称 youtNew
记录输出。
paramStruct.SaveOutput = 'on';
paramStruct.OutputSaveName = 'youtNew';
使用在结构体中指定的选项仿真模型。
simOut = sim('vdp',paramStruct)
simOut =
Simulink.SimulationOutput:
xoutNew: [64x2 double]
youtNew: [64x2 double]
SimulationMetadata: [1x1 Simulink.SimulationMetadata]
ErrorMessage: [0x0 char]
使用 Simulink.Configset
对象仿真模型
打开模型 vdp 并获取活动配置的 Simulink.ConfigSet 对象。
mdl = "vdp";
open_system(mdl)
cs = getActiveConfigSet(mdl);
创建 Simulink.ConfigSet 对象的一个副本。然后,使用 set_param 函数修改配置集中的参数值。将 ConfigSet 对象中的参数配置为:
-
使用绝对容差 1e-5
-
使用变量名称 xoutNew 记录状态
-
使用变量名称 youtNew 记录输出
csNew = copy(cs);
set_param(csNew,"AbsTol","1e-5",...
"SaveState","on","StateSaveName","xoutNew",...
"SaveOutput","on","OutputSaveName","youtNew")
使用修改后的 Simulink.ConfigSet 对象仿真模型。
simOut = sim(mdl,csNew)
simOut =
Simulink.SimulationOutput:
xoutNew: [65x2 double]
youtNew: [65x2 double]
SimulationMetadata: [1x1 Simulink.SimulationMetadata]
ErrorMessage: [0x0 char]