sim
Simulink 模型的运行和脚本化编程仿真
语法
说明
Simulink.SimulationInput
对象语法
根据在一个或多个 simout
= sim(simin
)Simulink.SimulationInput
对象上定义的属性,运行 Simulink® 模型的一个或多个仿真。
如果
simin
是标量Simulink.SimulationInput
对象,则simout
是标量Simulink.SimulationOutput
对象。如果
simin
是由Simulink.SimulationInput
对象组成的向量、矩阵或数组,则simout
是与simin
具有相同维数的由Simulink.SimulationOutput
对象组成的向量、矩阵或数组。
您可以使用 SimulationInput
对象来配置仿真的选项和输入,包括:
要仿真的模型
外部输入数据的源变量或文件
用于仿真的模块参数值
用于仿真的模型配置参数值
当 SimulationInput
对象的属性修改模型或模块参数值时,该值将在仿真期间修改,并在仿真结束时还原。
当您使用 SimulationInput
对象配置程序化仿真时,您可以轻松地从使用 sim
函数转换为使用其他函数,如 parsim
和 batchsim
。
有关详细信息,请参阅以编程方式运行仿真。
根据 simout
= sim(simin
,Name=Value
)Simulink.SimulationInput
对象 simin
上定义的属性仿真模型,并使用由一个或多个名称-值参量指定的附加选项。
有关 Simulink.SimulationInput
语法支持的名称-值参量列表,请参阅Simulink.SimulationInput 对象语法。
模型语法
使用模型的当前配置参数和模块参数值仿真由 simout
= sim(mdl
)mdl
指定的模型。
如果模型启用了单一仿真输出参数,则
simout
是一个Simulink.SimulationOutput
对象。如果模型未启用单一仿真输出参数,则
simout
是一个包含仿真时间的向量。有关详细信息,请参阅不推荐使用返回多个输出参量的语法。
使用指定的选项仿真模型 simout
= sim(mdl
,Name=Value
)mdl
,并使用由一个或多个名称-值参量指定的选项。例如,通过将参数名称和值指定为名称-值参量,可以修改仿真的模型配置参数值。
当您通过向 sim
函数提供输入来修改模型配置参数时,这些更改将在仿真期间应用,并在仿真结束时还原。
有关模型语法支持的名称-值参量列表,请参阅模型语法。
使用由结构体 simout
= sim(mdl
,paramstruct
)paramstruct
指定的模型配置参数值仿真模型 mdl
。
示例
您可以使用 Simulink.SimulationInput
对象来存储独立于仿真模型的仿真配置。Simulink.SimulationInput
对象中的配置将应用于仿真模型。仿真后,任何发生更改的模型设置都将还原为原始值。
打开模型 IntegrateSine
。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。
mdl = "IntegrateSine";
open_system(mdl)
创建一个 Simulink.SimulationInput
对象来存储模型 IntegrateSine
的仿真配置。
simIn = Simulink.SimulationInput(mdl);
使用 setModelParameter
函数将 SimulationInput
对象配置为使用 ode45
求解器并将仿真停止时间设为 20
秒。
simIn = setModelParameter(simIn,"Solver","ode45",... "StopTime","20");
使用 setBlockParameter
函数配置 SimulationInput
对象,将 Sine Wave 模块的振幅参数设置为 2
。
blk = strcat(mdl,"/Sine Wave"); simIn = setBlockParameter(simIn,blk,"Amplitude","2");
使用存储在 Simulink.SimulationInput
对象 simIn
中的配置对模型进行仿真。
out = sim(simIn);
该模型对 Sine Wave 模块使用 ode45
求解器,以 2
为振幅仿真 20
秒。
当您使用 Simulink.SimulationInput
对象数组来配置一组仿真时,只需调用一次 sim
函数即可使用快速重启运行一组仿真。快速重启通过在各次仿真运行之间保持模型编译来节省仿真时间。
打开模型 IntegrateSine
。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。
mdl = "IntegrateSine";
open_system(mdl)
假设您要运行一组(包含六个)仿真,每个仿真对 Sine Wave 模块使用不同频率值。创建一个包含各个仿真的频率值的向量。
freqs = [0.5 1 1.5 2 2.5 3];
当您要调节模块参数时,可以使用变量定义参数值。然后,通过更改变量值来调节模块参数。
定义变量 freq
,将其用作 Sine Wave 模块的频率参数的值。对于初始变量值,可以使用当前参数值。
blk = mdl + "/Sine Wave"; freq = str2double(get_param(blk,"Frequency"));
将 Sine Wave 模块的 Frequency
参数值设置为 freq
。
set_param(blk,"Frequency","freq")
在 for
循环中,创建一个包含六个 Simulink.SimulationInput
对象的数组,并使用 setVariable
函数来配置每个对象以使用频率向量中的值。
for k = length(freqs):-1:1 simIn(k) = Simulink.SimulationInput(mdl); simIn(k) = setVariable(simIn(k),"freq",freqs(k)); end
使用 sim
函数运行由 SimulationInput
对象 simIn
的数组定义的仿真。使用 UseFastRestart
名称-值参量启用快速重启。仅当第一个输入参量是 Simulink.SimulationInput
对象时,才支持 UseFastRestart
名称-值参量。要在第一个参量是模型名称时使用快速重启,请使用 FastRestart
名称-值参量。
out = sim(simIn,"UseFastRestart","on");
[12-Aug-2025 19:22:49] Running simulations... [12-Aug-2025 19:22:51] Completed 1 of 6 simulation runs [12-Aug-2025 19:22:51] Completed 2 of 6 simulation runs [12-Aug-2025 19:22:52] Completed 3 of 6 simulation runs [12-Aug-2025 19:22:53] Completed 4 of 6 simulation runs [12-Aug-2025 19:22:53] Completed 5 of 6 simulation runs [12-Aug-2025 19:22:53] Completed 6 of 6 simulation runs
要运行同一组仿真而不显示进度消息,请将 ShowProgress
名称-值参量指定为 off
。
out = sim(simIn,"UseFastRestart","on","ShowProgress","off");
要使用仿真管理器监控仿真的进度,请将 ShowSimulationManager
名称-值参量指定为 on
。有关仿真管理器的详细信息,请参阅Simulation Manager。
out = sim(simIn,"UseFastRestart","on",... "ShowProgress","off","ShowSimulationManager","on");
仿真输出 out
是包含每个仿真的元数据和结果的 Simulink.SimulationOutput
对象数组。输出数组中 SimulationOutput
对象的顺序与输入数组中 SimulationInput
对象的顺序匹配。例如,索引 1
处的 SimulationOutput
对象包含使用索引 1
处的 SimulationInput
对象配置的仿真的结果。
访问第一次仿真结果记录的输出信号,第一次仿真使用的频率值为 0.5
。
youtPt5 = out(1).yout
youtPt5 = Simulink.SimulationData.Dataset 'yout' with 1 element Name BlockPath ______ _____________________ 1 [1x1 Signal] output IntegrateSine/Outport - Use braces { } to access, modify, or add elements using index.
打开模型 IntegrateSine
。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。
mdl = "IntegrateSine";
open_system(mdl);
使用当前配置参数值仿真模型。
out = sim(mdl);
仿真运行 10
秒,对振幅为 1
的正弦波求积分。
您可以使用 set_param
函数修改模型中的模型配置参数值和模块参数值。
配置模型以使用 ode45
求解器并将仿真停止时间设为 20
秒。
set_param(mdl,"Solver","ode45","StopTime","20")
将 Sine Wave 模块的振幅参数设置为 2
。
blk = strcat(mdl,"/Sine Wave"); set_param(blk,"Amplitude","2")
当您使用 set_param
函数修改配置参数值或模块参数值时,更改会应用于模块图并弄脏模型文件。当您再次调用 sim
函数时,即使您没有保存模型,仿真也会使用新参数值,这些参数值是当前模型配置的一部分。
out2 = sim(mdl);
仿真运行 20
秒,对振幅为 2
的正弦波求积分。
通过将仿真的配置参数指定为 sim
函数的名称-值参量,可以将模型的仿真配置为使用不同模型配置参数值。您指定的参数值将应用于仿真,并在仿真完成时还原。
您只能将模型配置参数值指定为 sim
函数的名称-值参量,而不能将模块参数值指定为参量。要在单一输入中指定仿真的模型配置参数值、模块参数值和变量值,请改用 Simulink.SimulationInput
对象。
打开模型 IntegrateSine
。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。
mdl = "IntegrateSine";
open_system(mdl);
假设您要使用 ode45
求解器和 20
秒的仿真停止时间对模型进行仿真。指定仿真的 Solver
和 StopTime
值作为 sim
函数的名称-值参量。
out = sim(mdl,"Solver","ode45","StopTime","20");
该模型使用求解器 ode45
进行仿真,直到到达仿真时间 20
秒处。
您可以使用由模型配置参数的名称和值组成的结构体来配置模型的仿真。将结构体中的配置参数值应用于模型进行仿真。仿真后,任何发生更改的模型设置都将还原为原始值。
结构体输入只能指定模型配置参数值,而无法指定要在仿真中使用的不同模块参数或变量值。要在单一输入中指定仿真的模型配置参数值、模块参数值和变量值,请改用 Simulink.SimulationInput
对象。
打开模型 IntegrateSine
。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。
mdl = "IntegrateSine";
open_system(mdl)
创建结构体 SimConfig
,该结构体将仿真配置为使用 ode45
求解器且仿真停止时间为 20
秒。对于要在仿真中修改的每个配置参数,该结构体都包含一个对应的字段。每个字段的名称与对应的参数的编程名称匹配。每个字段的值指定仿真中使用的该参数的值。
simConfig.Solver = "ode45"; simConfig.StopTime = "20";
使用结构体中的模型配置参数值仿真模型。
out = sim(mdl,simConfig);
该模型使用 ode45
求解器进行仿真,仿真时间 20
秒。
Simulink.ConfigSet
对象存储一组模型配置参数值。您可以将 Simulink.ConfigSet
对象指定为 sim
函数的输入。该对象中的配置集将应用于要仿真的模型。在仿真后,模型中将还原原始配置集。
Simulink.Configset
对象仅存储模型配置参数值。要在单一输入中指定仿真的模型配置参数值、模块参数值和变量值,请改用 Simulink.SimulationInput
对象。
打开模型 IntegrateSine
。该模型使用 Integrator 模块对 Sine Wave 模块的输出进行积分。Integrator 模块的输出连接到 Outport 模块。
mdl = "IntegrateSine";
open_system(mdl)
使用 getActiveConfigSet
函数获取当前模型配置的 Simulink.ConfigSet
对象。
mdlConfig = getActiveConfigSet(mdl);
使用 copy
函数创建要修改的 Simulink.ConfigSet
对象的副本。
simConfig = copy(mdlConfig);
修改 Simulink.ConfigSet
对象 simConfig
以使用 ode45
求解器并将仿真停止时间设为 20
秒。
set_param(simConfig,"Solver","ode45","StopTime","20");
使用 Simulink.Configset
对象 simConfig
中的配置参数仿真模型。
out = sim(mdl,simConfig);
该模型使用 ode45
求解器进行仿真,仿真时间 20
秒。
输入参数
仿真输入和配置,指定为一个 Simulink.SimulationInput
对象或一个 Simulink.SimulationInput
对象数组。SimulationInput
对象的属性指定在仿真中使用的选项和参数值,包括:
要仿真的模型
外部输入数据的源变量或文件
用于仿真的模块参数值
用于仿真的模型配置参数值
SimulationInput
对象的属性中定义的值将应用于仿真的模型,并在仿真结束时还原。
要仿真的模型,指定为定义模型名称的字符串或字符向量或模型句柄 (自 R2024a 起)。
示例: simOut = sim("vdp")
使用模型中当前配置的参数值对名为 vdp
的模型进行仿真。
数据类型: char
| string
要仿真的模型配置,指定为结构体。该结构体的字段是模型配置参数的名称。每个字段的值表示要在仿真中使用的参数值。例如,要从开始时间 5
到停止时间 10
对模型进行仿真,请创建以下结构体:
paramStruct.StartTime = "5"; paramStruct.StopTime = "10";
数据类型: struct
要仿真的模型配置,指定为 Simulink.ConfigSet
对象。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: out = sim(simin,UseFastRestart="on")
运行一组使用启用了快速重启的 Simulink.SimulationInput
对象数组配置的仿真。
示例: out = sim(mdl,Solver="ode15s",StopTime="30")
配置模型 mdl
的仿真以使用停止时间为 30 秒的求解器 ode15s
。
注意
sim
函数支持不同的名称-值参量,具体取决于您是将第一个输入指定为一个或多个 Simulink.SimulationInput
对象还指定为要仿真的模型的名称还是句柄。
Simulink.SimulationInput
对象语法
启用快速重启的选项,指定为 "off"
或 "on"
。快速重启通过在适当时跳过编译和终止阶段来减少运行一组仿真所需的时间。有关详细信息,请参阅How Fast Restart Improves Iterative Simulations。
当您通过指定 SimulationInput
对象数组单次调用 sim
函数来运行同一模型的多个仿真时,请考虑使用快速重启。有关详细信息,请参阅Script Iterative or Batch Simulations Using Fast Restart。
当您指定标量 SimulationInput
对象时,此参量不起作用。
仅当将 sim
函数的第一个输入参量指定为一个或多个 Simulink.SimulationInput
对象时,才支持此参量。
示例: out = sim(simin,UseFastRestart="on");
数据类型: char
| string
出现仿真错误时跳过后续仿真的选项,指定为 "off"
或 "on"
。仅当您通过指定 Simulink.SimulationInput
对象数组作为第一个参量来单次调用 sim
函数以运行多个仿真时,此参量才起作用。
"off"
- 如果发生仿真错误,软件会在仿真输出中捕获错误并继续运行任何后续仿真。例如,如果指定一个包含五个
SimulationInput
对象的向量,并且在第二个仿真期间出现错误,软件将在第二个仿真的输出中捕获错误并继续运行第三个、第四个和第五个仿真。"on"
- 如果发生仿真错误,软件会在仿真输出中捕获错误,但不运行任何后续仿真。例如,如果指定一个包含五个
SimulationInput
对象的向量,并且在第二个仿真期间出现错误,软件将在第二个仿真的输出中捕获错误,但不运行第三个、第四个和第五个仿真。sim
函数会为每个未运行的仿真返回一个空Simulink.SimulationOutput
对象。
当您通过指定标量 SimulationInput
对象来运行单个仿真时,此参量不起作用。 (自 R2024a 起)
仅当将 sim
函数的第一个输入参量指定为一个或多个 Simulink.SimulationInput
对象时,才支持此参量。
示例: out = sim(simin,StopOnError="on");
提示
当您通过指定
SimulationInput
对象数组来运行多个仿真时,软件始终会为每个仿真启用CaptureErrors
参数。对于使用sim
函数运行的单个仿真,默认情况下CaptureErrors
处于关闭状态。要控制软件是否通过指定标量
SimulationInput
对象来捕获运行的单个仿真的仿真输出中的错误,请使用setModelParameter
函数为仿真指定CaptureErrors
参数。 (自 R2024a 起)当您使用对
sim
函数的单次调用运行多个仿真时,或当您配置单个仿真以捕获仿真输出中的仿真错误时,您可以在仿真输出中查看有关错误和仿真的信息。要查看该消息,请使用
SimulationOutput
对象的ErrorMessage
属性。有关该错误的详细信息,请使用
Simulink.SimulationMetadata
对象的ExecutionInfo
属性。ErrorDiagnostic
字段包含有关错误的信息,包括发生错误的仿真阶段。
数据类型: char
| string
指示仿真进度的选项,指定为 "off"
或 "on"
。
"off"
- 仿真运行时不显示进度消息。"on"
- 仿真进行时显示进度更新。
此参数的默认值取决于第一个输入参量的大小:
当第一个输入参量是标量
Simulink.SimulationInput
对象时,默认值为"off"
。当第一个输入参量是
Simulink.SimulationInput
对象数组时,默认值为"on"
。
仅当将 sim
函数的第一个输入参量指定为一个或多个 Simulink.SimulationInput
对象时,才支持此参量。
示例: out = sim(simin,ShowProgress="on");
打开仿真管理器的选项,指定为 "off"
或 "on"
。使用仿真管理器监控您运行仿真的进度。当您通过指定 Simulink.SimulationInput
对象数组运行多个仿真时,请考虑使用仿真管理器。
仅当将 sim
函数的第一个输入参量指定为一个或多个 Simulink.SimulationInput
对象时,才支持此参量。
示例: out = sim(simin,ShowSimulationManager="on");
模型语法
模型配置参数,指定为由配置参数的编程名称和配置参数值组成的名称-值参量。例如,要为停止时间参数指定值,请使用编程参数名称 StopTime
作为名称-值参量中的名称,并将仿真停止时间指定为值。这些命令运行名为 MyModel
的模型的仿真,仿真持续运行 100 秒后停止。
mdl = "MyModel"; out = sim(mdl,StopTime="100");
在使用 sim
函数运行的仿真中,您可以使用名称-值参量来指定任何模型配置参数的值。您指定的配置参数值将应用于仿真,并在仿真结束时还原。在仿真模型层次结构时,您指定的配置参数值将应用于顶层模型。
仅当您将第一个输入参量指定为要仿真的模型的名称或句柄时,才支持将模型配置参数值指定为 sim
函数的名称-值参量。
示例: out = sim("MyModel",SaveOutput="on");
提示
要为使用
Simulink.SimulationInput
对象配置的仿真指定配置参数值,请使用setModelParameter
函数。simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,StopTime="100");
要获取模型配置参数列表,请使用
getActiveConfigSet
函数和get_param
函数。例如,要查看名为vdp
的模型的配置参数,请在 MATLAB® 命令行窗口中输入以下命令。configSet = getActiveConfigSet("vdp"); configSetNames = get_param(configSet,"ObjectParameters")
get_param
函数返回所有模型配置参数的列表,例如StopTime
、SaveTime
、SaveState
、SaveOutput
和SignalLogging
。
启用快速重启的选项,指定为 "on"
或 "off"
。
"on"
- 支持快速重启以进行仿真。快速重启会在启用快速重启后为运行的第一个仿真编译模型后跳过编译和终止,从而节省迭代仿真工作流中的时间。默认情况下,快速重启处于禁用状态,使用sim
函数运行的仿真不会启用快速重启。有关详细信息,请参阅How Fast Restart Improves Iterative Simulations。使用此名称-值参量启用快速重启时,如果模型尚未在快速重启模式下完成初始化,软件将在运行仿真之前编译模型。在仿真结束时,模型会在快速重启模式下保持初始化状态。有关详细信息,请参阅Script Iterative or Batch Simulations Using Fast Restart。
"off"
- 禁用仿真的快速重启。禁用快速重启后,每次运行仿真时,软件都会编译模型、初始化仿真、运行仿真,然后终止仿真。
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",FastRestart="on");
提示
当您指定标量
SimulationInput
对象作为sim
函数的第一个输入时,请使用setModelParameter
函数在SimulationInput
对象上指定此参数。 (自 R2024a 起)simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,FastRestart="on");
当您将一个
SimulationInput
对象数组指定为sim
函数的第一个输入时,请通过指定UseFastRestart
名称-值参量为这批仿真启用快速重启。如果在对快速重启模式下初始化的模型进行仿真时将此名称-值参量指定为
"off"
,软件将终止上一个仿真并在运行当前仿真之前编译模型。如果您使用 Simulink 编辑器或
set_param
函数启用快速重启,则即使您没有指定FastRestart
名称-值参量,使用sim
函数运行的仿真也会使用快速重启。
数据类型: char
| string
仿真模式,指定为 "normal"
、"accelerator"
或 "rapid-accelerator"
。
值 | 描述 |
---|---|
"normal" | 使用普通模式运行仿真。 普通模式仿真使用完整模型表示,并为仿真期间与模型的交互提供最佳支持。 对于涉及在各仿真之间修改模型结构的工作流,请使用普通模式。为了获得最佳结果,请使用普通模式来调试仿真。 |
"accelerator" | 使用加速模式运行仿真。 加速模式仿真生成模型的优化表示(称为仿真目标)以用于仿真中。提高仿真性能的优化会降低仿真期间与模型交互的能力。在各加速模式仿真之间修改模型可能需要重新生成仿真目标。 在不涉及在各仿真之间对模型进行结构性更改的工作流中,使用加速模式可以加速仿真。 |
"rapid-accelerator" | 使用快速加速模式运行仿真。 快速加速模式仿真生成一个独立可执行文件以用于仿真。该独立可执行文件为仿真期间与模型的交互提供最少的支持。在各快速加速仿真之间修改模型可能需要重新编译独立可执行文件。 当您在仿真之间仅通过调节变量和参数值修改模型时,使用快速加速模式可实现最快的仿真执行。调节某些参数值可能需要重新编译独立可执行文件。 |
有关详细信息,请参阅选择仿真模式和Code Regeneration in Accelerated Models。
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",SimulationMode="accelerator");
提示
要为使用
Simulink.SimulationInput
对象配置的仿真指定此选项,请使用setModelParameter
函数。simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,SimulationMode="accelerator");
当您从 UI(如 Simulink 编辑器)运行仿真时,可视化模块会在仿真期间更新,但当您以编程方式运行快速加速仿真时,可视化模块不会在仿真期间更新。
为了防止重新编译独立可执行文件,您可以通过将
RapidAcceleratorUpToDateCheck
参数值指定为"off"
来禁用快速加速最新检查。禁用最新检查后,您所做的需要重新编译可执行文件的更改将被忽略。要使用快速加速模式进行仿真,您可以将
"rapid"
指定为"rapid-accelerator"
的部分匹配。有关 MATLAB 中名称-值参量的详细信息,请参阅验证名称-值参量。
数据类型: char
| string
发生仿真错误时捕获错误并返回仿真输出的选项,指定为 "off"
或 "on"
。
行为 | CaptureErrors="off" (默认值) | CaptureErrors="on" |
---|---|---|
出现仿真错误时发出异常 | 软件会在出现仿真错误时发出异常。 该异常会停止发生错误的仿真和调用仿真的进程。 | 软件不会在出现仿真错误时发出异常。 出现仿真错误时会停止仿真。不过,如果另一个函数或脚本调用了仿真,该函数或脚本将继续执行。 |
错误报告 | 在 MATLAB 命令行窗口中会报告仿真期间出现的错误。 | 仿真输出中会捕获有关仿真错误的信息,包括消息和发生错误的仿真阶段。 |
仿真结果 | 发出异常时会立即停止仿真。 |
|
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",CaptureErrors="on");
提示
软件在环 (SIL) 和处理器在环 (PIL) 仿真不支持此选项。
当您指定标量
SimulationInput
对象作为sim
函数的输入时,请使用setModelParameter
函数在SimulationInput
对象上指定此参数。 (自 R2024a 起)simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,CaptureErrors="on");
当您配置单个仿真以捕获仿真错误时,以及当您通过指定
SimulationInput
对象数组运行多个仿真时,您可以在仿真结果中查看有关错误和仿真的信息。要查看该消息,请使用
SimulationOutput
对象的ErrorMessage
属性。有关该错误的详细信息,请使用
Simulink.SimulationMetadata
对象的ExecutionInfo
属性。ErrorDiagnostic
字段包含有关错误的信息,包括发生错误的仿真阶段。
数据类型: char
| string
启动编程仿真调试会话的选项,指定为 "off"
或 "on"
。
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",Debug="on");
数据类型: char
| string
禁用重新编译快速加速目标的选项,指定为 "on"
或 "off"
。当您将此参量指定为 "on"
时,需要重新编译快速加速目标的更改将被忽略。使用此选项时,请仅修改不需要重新编译快速加速目标的选项。
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",RapidAcceleratorUpToDateCheck="off");
提示
要为使用 Simulink.SimulationInput
对象配置的仿真指定此选项,请使用 setModelParameter
函数。
simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,RapidAcceleratorUpToDateCheck="off");
数据类型: char
| string
最大仿真运行时间,指定为正标量。以秒为单位指定允许仿真运行的时间。如果仿真运行时间超出您指定的值,软件将发出警告并停止仿真。例如,如果将 TimeOut
指定为 30
,则计算仿真结果所需的时间超过 30 秒时,软件将停止仿真并发出警告。
TimeOut
参数指定仿真运行的时钟时间限制。要指定仿真的最大时间值,请使用停止时间参数。
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",TimeOut=60);
将仿真配置为最长运行时间为 60 秒。
提示
当您连续运行多个可变步长仿真时,请考虑指定超时。如果仿真条件对步长有限制,使得求解器开始采用许多非常小的时间步,则仿真会超时,以便后续仿真能够运行。
要为使用
Simulink.SimulationInput
对象配置的仿真指定此选项,请使用setModelParameter
函数。simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,TimeOut=60);
仿真前显示参数摘要的选项,指定为 "siminfo"
。
仅当将 sim
函数的第一个输入参量指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",Trace="siminfo");
数据类型: char
| string
输出参量
提示
为确保
sim
函数以相同的格式为每种语法返回结果,请在启用单一仿真输出参数的情况下保存模型。启用此选项后,仿真结果将以一个或多个Simulink.SimulationOutput
对象形式返回,每个对象都包含仿真的所有记录的数据和仿真元数据,包括计时信息和诊断信息。以单个对象形式返回所有仿真数据和元数据有助于分析多个仿真的结果。使用
sim
函数运行仿真时,仿真会一直运行,直到出现错误或仿真到达指定的停止时间。要运行或脚本化编程仿真以便控制仿真执行和在仿真期间调节参数值,请使用Simulation
对象。 (自 R2024a 起)有关详细信息,请参阅以编程方式运行仿真。通过使用
set_param
函数发出仿真命令,您既可以使用 MATLAB 命令行窗口也可以使用 Simulink 编辑器与仿真进行交互。有关详细信息,请参阅以编程方式运行仿真。当您仿真停止时间为无限长的模型时,通过按 Ctrl+C 键从 MATLAB 命令行窗口停止仿真。仿真停止,仿真结果不会保存在 MATLAB 工作区中。
使用“配置参数”对话框配置时间、状态和输出的记录。在建模选项卡上的设置下,点击模型设置。然后,在“配置参数”对话框中,选择数据导入/导出。
要记录整个模型中的信号,请使用信号记录或记录模块,如 To Workspace 模块或 Record 模块。有关信号记录的详细信息,请参阅使用信号记录保存信号数据。
版本历史记录
在 R2006a 之前推出当您使用 sim
函数运行普通或加速模式仿真且模型处于打开状态时,模型的 Simulink 编辑器窗口底部的状态栏会更新以显示仿真期间的当前仿真时间。
在以前的版本中,如果除标量 SimulationInput
对象外还指定了一个或多个名称-值参量,包括 StopOnError
名称-值参量,则 sim
函数会覆盖单个仿真的 CaptureErrors
参数。现在,sim
函数具有一致的默认行为和选项,如下表所示。
SimulationInput 维度 | CaptureErrors | StopOnError | 行为更改 |
---|---|---|---|
标量 | 默认为 要启用此参数,请使用 | 运行单个仿真时,此名称-值参量不起作用。 | 在以前版本的脚本或函数中,对 |
向量、矩阵、数组 | 始终为 "on" 。 | 默认为 将此名称-值参量指定为 | 没有变化。 |
您可以配置 Simulink.SimulationInput
对象,以便使用 sim
函数和标量 SimulationInput
对象为运行的单个仿真启用快速重启。快速重启会只针对启用了快速重启的第一个仿真编译一次模型,从而节省迭代仿真工作流中的时间。如果您使用 sim
函数为单个仿真启用快速重启,则在仿真结束时,FastRestart
参数会在模型中保持启用状态,并且模型回在快速重启模式下进行初始化。
FastRestart
参数仅适用于一次运行一个仿真的情形。要对使用 SimulationInput
对象数组一起运行的多个仿真使用快速重启,请使用 UseFastRestart
名称-值参量。
代码分析器对返回多个输出参量的 sim
函数调用发出警告。从 R2009b 开始,推荐使用单一仿真输出语法,不推荐使用多输出语法。
以后的版本将不再支持返回多个输出参量的语法。
对于新模型,单一仿真输出参数默认处于启用状态。当您对启用了单一仿真输出参数的模型进行仿真时,仿真始终以单一 Simulink.SimulationOutput
对象形式返回仿真结果。
我们从 R2009b 开始便推荐您使用 sim
函数的单一仿真输出语法。为确保 sim
函数始终以一致的格式返回仿真结果,请在启用单一仿真输出参数的情况下保存模型。
sim
函数具有新语法来支持使用一个或多个 Simulink.SimulationInput
对象配置仿真。SimulationInput
对象表示仿真的设定,包括仿真中要使用的初始状态或工作点、外部输入、模型参数值、模块参数值和变量值。SimulationInput
对象上的值会覆盖用于仿真的模型中保存的值,但不会修改或弄脏模型。
SimulationInput
对象提供改进的支持,推荐与新的 parsim
函数一起用于并行仿真。
使用新的单一输出语法,您可以将所有仿真结果和元数据以单个输出参量的形式返回。单一仿真输出是一个 Simulink.SimulationOutput
对象,其中包含仿真中记录的所有数据以及仿真元数据。返回单一输出参量能够更好地支持并行仿真,并有助于分析多个仿真的结果。
要始终将仿真结果作为单一输出返回,请在启用单一仿真输出参数的情况下保存您的模型。
从 R2009b 开始,sim
函数增强了与并行计算的兼容性,包括将仿真结果作为单个仿真对象返回的选项,从而简化了数据和变量管理。推荐使用单一仿真输出语法。不推荐使用返回多个输出参量的语法。
要将模型配置为始终以单一输出对象形式返回结果,请使用单一仿真输出参数。
要在 R2009a 及更早版本中以编程方式仿真模型,请使用以下语法。
[T,X,Y1,Y2,Yn] = sim('model',Timespan,Options,UT);
只有 model
输入参量是必需的。如果不指定其他输入参量,仿真将使用模型的当前配置参数值。当您指定其他参量时,这些参量将覆盖模型的当前值。当您将参量指定为 []
时,仿真将使用该参量在模型中的当前值。
以下各表描述输入和输出参量,并提供有关如何更新代码以使用 R2009b 及更高版本推荐的语法的信息。
输入参量描述和替代项
输入参量 | R2009a 及更早版本的参量目的和值 | 替代项 |
---|---|---|
model | 要仿真的模型的名称,指定为字符向量。 | 不需要更改。 从 R2017a 开始,您可以使用 |
Timespan | 仿真开始和停止时间,指定为标量或向量。
| 通过将模型配置参数指定为名称-值参量来配置以下选项: 从 R2017a 开始,您可以使用 |
Options | 一个或多个仿真参数,指定为结构体。 | 使用名称-值参量指定模型配置参数。 从 R2017a 开始,您可以使用 |
UT | 根级输入端口的外部输入数据。 | 使用输入参数指定根级输入端口的输入数据。将参数指定为名称-值参量。 从 R2017a 开始,您可以使用 |
输出参量描述和替代项
输出参量 | R2009a 及更早版本的参量目的和值 | 替代项 |
---|---|---|
T | 仿真时间,以向量形式返回。 | 通过 tout = simOut.tout; 使用模型配置参数指定要记录的数据以及记录数据的变量名称。 |
X | 记录的状态,以数组或结构体形式返回。 | |
Y1,Y2,...,YN | 记录的输出,以一个或多个向量形式返回。 |
从 R2009b 开始,不推荐使用 SrcWorkspace
名称-值参量。指定此参量会导致并行仿真出现透明度违规。请不要使用在工作区中定义的值,而是将仿真的值指定为 sim
函数的输入参量。
在 R2017a 之前,使用结构体指定仿真的参数值,该结构体包含字段(其名称与参数名称匹配)和值(指示用于参数的值)。
从 R2017a 开始,使用
Simulink.SimulationInput
对象配置模型参数、模块参数和变量值。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)