sim
R2026bSimulink 模型的运行和脚本化编程仿真
语法
描述
Simulink.SimulationInput 对象语法
根据在一个或多个 out = sim(simin)Simulink.SimulationInput 对象上定义的属性,运行 Simulink® 模型的一个或多个仿真。
如果
simin是标量Simulink.SimulationInput对象,则out是标量Simulink.SimulationOutput对象。如果
simin是由Simulink.SimulationInput对象组成的向量、矩阵或数组,则out是与simin具有相同维数的由Simulink.SimulationOutput对象组成的向量、矩阵或数组。
您可以使用 Simulink.SimulationInput 对象来配置仿真的选项和输入,包括:
要仿真的模型
外部输入数据的源变量或文件
用于仿真的模块参数值
用于仿真的模型配置参数值
当 Simulink.SimulationInput 对象的属性修改模型或模块参数值时,该值将在仿真期间修改,并在仿真结束时还原。
当您使用 Simulink.SimulationInput 对象配置程序化仿真时,您可以从使用 sim 函数转换为使用其他函数,如 parsim 和 batchsim。
有关详细信息,请参阅以编程方式运行仿真。
使用一个或多个名称-值参量指定的附加选项来运行仿真。out = sim(simin,Name=Value)
有关 Simulink.SimulationInput 语法支持的名称-值参量列表,请参阅Simulink.SimulationInput 对象语法。
模型语法
使用在模型中指定的当前配置参数和模块参数值对模型 out = sim(mdl)mdl 进行仿真。
如果模型启用了单一仿真输出参数或快速重启,则
out是一个Simulink.SimulationOutput对象。如果模型未启用单一仿真输出或快速重启,则
out是包含仿真时间的向量。有关详细信息,请参阅不推荐使用返回多个输出参量的语法。
使用指定的选项仿真模型,并使用由一个或多个名称-值参量指定的选项。例如,通过将参数名称和值指定为名称-值参量,可以修改仿真的模型配置参数值。out = sim(mdl,Name=Value)
当您通过向 sim 函数提供输入来修改模型配置参数时,这些更改将在仿真期间应用,并在仿真结束时还原。
有关模型语法支持的名称-值参量列表,请参阅模型语法。
示例
假设您有名为 IntegrateSine 的模型,该模型对 Sine Wave 模块的输出进行积分,并使用 Outport 模块记录结果。Scope 模块显示正弦波输入和积分输出。您打开模型并希望使用在模型中保存的参数值对该模型进行仿真。

通过将模型名称指定为 sim 函数的输入对该模型进行仿真。
out = sim(mdl);
仿真使用在模型中指定的当前模型配置参数和模块参数运行。在本例中,模型停止时间为 10 秒,Sine Wave 模块的振幅为 1。

要在不弄脏模型的情况下修改模型中的参数以进行仿真,请使用 Simulink.SimulationInput 对象来配置仿真。当您使用 Simulink.SimulationInput 对象配置仿真时,您可以配置模型配置参数、模块参数和变量值。sim 函数在仿真期间应用在 Simulink.SimulationInput 对象上指定的配置,并在仿真完成时还原对模型的更改。
假设您要针对正弦波输入的不同振幅对在使用当前参数值运行仿真中所述的模型 IntegrateSine 进行仿真。

要对模型进行参数化,请将 Sine Wave 模块的振幅参数的值指定为变量。打开模型。然后,在基础工作区中定义该变量,并将模型中模块参数的值指定为该变量。
mdl = "IntegrateSine"; open_system(mdl) a = 1; set_param(mdl + "/Sine Wave",Amplitude="a")
创建一个 Simulink.SimulationInput 对象来存储仿真配置。在 Simulink.SimulationInput 对象上指定参数和变量值以配置仿真,该仿真:
使用求解器
ode45运行至 20 秒处的停止时间
将仿真的正弦波输入的振幅设置为 2
mdl = "IntegrateSine"; simin = Simulink.SimulationInput(mdl); simin = setModelParameter(simin,Solver="ode45",StopTime="20"); simin = setVariable(simin,"a",2);
通过将 Simulink.SimulationInput 对象指定为 sim 函数的输入对该模型进行仿真。
out = sim(simin);
该模型使用求解器 ode45 和正弦波振幅 2 运行仿真 20 秒。

在仿真完成后,工作区中的变量、求解器参数和停止时间参数还原为其原始值。
快速重启通过在第一个仿真的执行阶段之前仅编译一次模型来加速参数扫描。每次后续仿真都会使用指定的参数值重新初始化模型而无需重新编译模型,这可以显著减少运行参数扫描所需的总时间。要为使用单次调用 sim 函数运行的参数扫描启用快速重启,请将 UseFastRestart 名称-值参量指定为 "on"。
假设您要针对正弦波输入的不同振幅对在使用当前参数值运行仿真中所述的模型 IntegrateSine 进行仿真。

要对模型进行参数化,请将 Sine Wave 模块的振幅参数的值指定为变量。打开模型。然后,在基础工作区中定义该变量,并将模型中模块参数的值指定为该变量。
mdl = "IntegrateSine"; open_system(mdl) a = 1; set_param(mdl + "/Sine Wave",Amplitude="a")
创建一个您要进行仿真的参数值向量。然后,创建一个 Simulink.SimulationInput 对象数组,表示参数扫描中每个仿真的配置。在 for 循环中,为每个 Simulink.SimulationInput 对象指定定义参数的变量的值。
mdl = "IntegrateSine"; amps = [1 2 3 4 5 6]; n = length(amps); simin(1:n) = Simulink.SimulationInput(mdl); for k = n:-1:1 simin(k) = setVariable(simin(k),"a",amps(k)); end
使用对 sim 函数的单次调用来运行参数扫描,并将 UseFastRestart 名称-值参量指定为 "on" 来启用快速重启。
out = sim(simin,UseFastRestart="on");[14-Apr-2026 17:31:23] Running simulations... [14-Apr-2026 17:31:24] Completed 1 of 6 simulation runs [14-Apr-2026 17:31:25] Completed 2 of 6 simulation runs [14-Apr-2026 17:31:25] Completed 3 of 6 simulation runs [14-Apr-2026 17:31:25] Completed 4 of 6 simulation runs [14-Apr-2026 17:31:26] Completed 5 of 6 simulation runs [14-Apr-2026 17:31:26] Completed 6 of 6 simulation runs
sim 函数将仿真结果以 Simulink.SimulationOutput 对象数组形式返回。数组中的每个 Simulink.SimulationOutput 对象都包含使用输入数组中相同索引的 Simulink.SimulationInput 对象配置的仿真的结果。例如,输出数组中索引 1 处的 Simulink.SimulationOutput 对象包含使用输入数组中索引 1 处的 Simulink.SimulationInput 对象运行的仿真的结果。
访问在第一个仿真中记录的输出数据,该仿真使用的振幅为 1。
yout1 = out(1).yout
yout1 =
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.
要隐藏进度消息,请将 ShowProgress 名称-值参量指定为 "off"。要使用仿真管理器监控进度,请将 ShowSimulationManager 名称-值参量指定为 "on"。有关详细信息,请参阅仿真管理器。
要在不弄脏模型的情况下配置仿真,您可以指定一个或多个名称-值参量。sim 函数在仿真期间修改参数,并在仿真完成时还原对模型的更改。名称-值参量只能指定模型配置参数。要配置其他参数,例如变量和模块参数值,请改用 Simulink.SimulationInput 对象。
假设您要使用求解器 ode45 对使用当前参数值运行仿真中所述的模型 IntegrateSine 运行仿真 20 秒。

对模型进行仿真。使用名称-值参量为仿真指定停止时间和求解器参数。
mdl = "IntegrateSine"; out = sim(mdl,StopTime="20",Solver="ode45");
要查看仿真中使用的参数值,请检查与仿真结果一起返回的仿真元数据。
slvr = out.SimulationMetadata.ModelInfo.SolverInfo.Solver
slvr =
'ode45'tstop = out.SimulationMetadata.ModelInfo.StopTime
tstop =
20要在不弄脏模型的情况下配置仿真,您可以指定一个结构体来定义您要修改的每个参数的名称和值。sim 函数在仿真期间修改指定的参数,并在仿真完成时还原对模型的更改。该结构体只能指定模型配置参数。要配置其他参数,例如变量和模块参数值,请改用 Simulink.SimulationInput 对象。
假设您要使用求解器 ode45 对使用当前参数值运行仿真中所述的模型 IntegrateSine 运行仿真 20 秒。

创建一个包含 Solver 和 StopTime 字段的结构体。
simconfig.Solver = "ode45"; simconfig.StopTime = "20";
使用在结构体中指定的参数值对模型进行仿真。
mdl = "IntegrateSine";
out = sim(mdl,simconfig);要查看仿真中使用的参数值,请检查与仿真结果一起返回的仿真元数据。
slvr = out.SimulationMetadata.ModelInfo.SolverInfo.Solver
slvr =
'ode45'tstop = out.SimulationMetadata.ModelInfo.StopTime
tstop =
20要将配置集应用于仿真而不弄脏模型,请使用 Simulink.ConfigSet 对象配置仿真。sim 函数在仿真期间将配置集应用于模型,并在仿真完成时还原更改。配置集仅指定模型配置参数值。要指定其他值,例如变量和模块参数值,请改用 Simulink.SimulationInput 对象。
假设您要使用求解器 ode45 对使用当前参数值运行仿真中所述的模型 IntegrateSine 运行仿真 20 秒。

要指定仿真中要使用的参数值,请创建并配置 Simulink.ConfigSet 对象。打开模型并获取当前配置集。然后,创建该配置集的一个副本,并对该副本指定停止时间和求解器。
mdl = "IntegrateSine"; open_system(mdl) mdlconfig = getActiveConfigSet(mdl); simconfig = copy(mdlconfig); set_param(simconfig,StopTime="20"); set_param(simconfig,Solver="ode45");
使用配置集 simconfig 对模型进行仿真。
out = sim(mdl,simconfig);
要查看仿真中使用的参数值,请检查与仿真结果一起返回的仿真元数据。
slvr = out.SimulationMetadata.ModelInfo.SolverInfo.Solver
slvr =
'ode45'tstop = out.SimulationMetadata.ModelInfo.StopTime
tstop =
20输入参数
仿真输入和配置,指定为一个 Simulink.SimulationInput 对象或一个 Simulink.SimulationInput 对象数组。Simulink.SimulationInput 对象的属性指定在仿真中使用的选项和参数值,包括:
要仿真的模型
外部输入数据的源变量或文件
用于仿真的模块参数值
用于仿真的模型配置参数值
Simulink.SimulationInput 对象的属性中定义的值将应用于仿真的模型,并在仿真结束时还原。
要仿真的模型,指定为定义模型名称的字符串或字符向量或模型句柄 (自 R2024a 起)。
示例: out = sim("vdp") 使用模型中当前配置的参数值对名为 vdp 的模型进行仿真。
数据类型: char | string
仿真中要使用的模型参数值,指定为结构体。要指定参数值,请向结构体添加一个与模型参数的编程名称匹配的字段。例如,要指定开始时间为 5 秒,停止时间为 10 秒,请创建以下结构体:
params.StartTime = "5"; params.StopTime = "10";
数据类型: struct
仿真中要使用的配置集,指定为 Simulink.ConfigSet 对象。
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: out = sim(simin,UseFastRestart="on") 使用快速重启运行一组仿真。
示例: out = sim(mdl,FastRestart="on") 启用快速重启并运行模型 mdl 的仿真。
注意
sim 函数支持不同的名称-值参量,具体取决于您是将第一个输入指定为一个或多个 Simulink.SimulationInput 对象还指定为要仿真的模型的名称还是句柄。
Simulink.SimulationInput 对象语法
启用快速重启的选项,指定为 "off" 或 "on"。快速重启通过在第一个仿真的执行阶段之前仅编译一次模型来减少运行一组仿真所需的时间。有关详细信息,请参阅How Fast Restart Improves Iterative Simulations。
当您通过指定 Simulink.SimulationInput 对象数组来运行一个模型的多个仿真时,请考虑使用快速重启。有关详细信息,请参阅Script Iterative or Batch Simulations Using Fast Restart。
仅当将 sim 函数的第一个输入指定为一个或多个 Simulink.SimulationInput 对象时,才支持此参量。
当您指定标量 Simulink.SimulationInput 对象时,此参量不起作用。要启用快速重启,请使用 setModelParameter 函数对 Simulink.SimulationInput 对象指定 FastRestart 参数。当您使用标量 Simulink.SimulationInput 对象启用快速重启时,仿真完成后快速重启在模型中保持启用状态。
示例: out = sim(simin,UseFastRestart="on");
数据类型: char | string
出现仿真错误时跳过后续仿真的选项,指定为 "off" 或 "on"。
"off"- 如果发生仿真错误,软件会在仿真输出中捕获错误并继续运行任何后续仿真。例如,假设您使用
Simulink.SimulationInput对象数组运行五个仿真。第二个仿真期间发生错误。sim函数在第二个仿真的输出中捕获错误并继续运行第三个、第四个和第五个仿真。"on"- 如果发生仿真错误,软件会在仿真输出中捕获错误,但不运行任何后续仿真。例如,假设您使用一个包含五个
Simulink.SimulationInput对象的数组运行五个仿真。第二个仿真期间发生错误。软件在第二个仿真的输出中捕获错误,并且不运行第三个、第四个和第五个仿真。sim函数会为每个未运行的仿真返回一个空Simulink.SimulationOutput对象。
当您将 sim 函数的第一个输入指定为标量 Simulink.SimulationInput 对象时,此参量不起作用。 (自 R2024a 起)
仅当将 sim 函数的第一个输入指定为一个或多个 Simulink.SimulationInput 对象时,才支持此参量。
示例: out = sim(simin,StopOnError="on");
提示
当第一个输入是
Simulink.SimulationInput对象数组时,sim函数始终为每个仿真启用CaptureErrors。在仿真输出和元数据中查看有关所捕获错误的信息。
sim函数在Simulink.SimulationOutput对象的ErrorMessage属性中捕获错误。msg = out.ErrorMessage;
要查看诊断查看器中的错误消息,请使用
sldiagviewer.reportSimulationMetadataDiagnostics函数。sldiagviewer.reportSimulationMetadataDiagnostics(out)
仿真返回的
Simulink.SimulationMetadata对象包含有关错误的附加信息,例如错误发生的仿真阶段。错误信息存储在ExecutionInfo属性的ErrorDiagnostic字段中。e = out.SimulationMetadata.ExecutionInfo.ErrorDiagnostic;
数据类型: char | string
指示仿真进度的选项,指定为 "off" 或 "on"。
"off"- 仿真运行时不显示进度消息。"on"- 仿真运行时显示进度更新。
此参数的默认值取决于 sim 函数第一个输入的维度:
当第一个输入是标量
Simulink.SimulationInput对象时,默认值为"off"。当第一个输入是
Simulink.SimulationInput对象数组时,默认值为"on"。
仅当将 sim 函数的第一个输入指定为一个或多个 Simulink.SimulationInput 对象时,才支持此参量。
示例: out = sim(simin,ShowProgress="on");
使用仿真管理器监控进度的选项,指定为 "off" 或 "on"。当您通过单次调用 sim 函数运行多个仿真时,请考虑使用仿真管理器。
仅当将 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函数。configSet = getActiveConfigSet("vdp"); configSetNames = get_param(configSet,"ObjectParameters")
get_param函数返回所有模型配置参数的列表,例如StopTime、SaveTime、SaveState、SaveOutput和SignalLogging。
为单个仿真启用快速重启的选项,指定为 "on" 或 "off"。快速重启会在启用快速重启后为运行的第一个仿真编译模型后跳过编译和终止,从而节省迭代仿真工作流中的时间。
"on"- 仿真在模型中启用FastRestart参数并使用快速重启运行。仿真结束后,FastRestart参数在模型中保持启用状态。如果模型尚未在快速重启模式下完成初始化,软件将在运行仿真之前编译模型。在仿真结束时,模型会在快速重启模式下保持初始化状态。要终止仿真,请禁用快速重启。有关详细信息,请参阅Script Iterative or Batch Simulations Using Fast Restart。
"off"- 仿真在模型中禁用FastRestart参数并在不使用快速重启的情况下运行。对于每次仿真,模型都会进行编译。如果模型已在快速重启模式下初始化,则
sim函数会在编译模型之前终止先前的仿真。
默认情况下,快速重启在模型中处于禁用状态,使用 sim 函数运行的仿真不会启用快速重启。如果您未指定此参量,sim 函数将使用模型中参数的值。
仅当将 sim 函数的第一个输入指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",FastRestart="on");
提示
要对
Simulink.SimulationInput对象指定此参数,请使用setModelParameter函数。 (自 R2024a 起)simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,FastRestart="on");
要使用快速重启运行一组仿真,请将第一个输入参量指定为
Simulink.SimulationInput对象数组,并改用UseFastRestart名称-值参量。如果您使用 Simulink 编辑器或
set_param函数启用快速重启,则即使您没有指定此参量,使用sim函数运行的仿真也会使用快速重启。快速重启仿真将结果以单个
Simulink.SimulationOutput对象形式返回,即使单一仿真输出配置参数被禁用也是如此。
数据类型: 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) 仿真不支持此选项。
要对
Simulink.SimulationInput对象指定此参数,请使用setModelParameter函数。 (自 R2024a 起)simin = Simulink.SimulationInput("MyModel"); simin = setModelParameter(simin,CaptureErrors="on");
在仿真输出和元数据中查看有关所捕获错误的信息。
sim函数在Simulink.SimulationOutput对象的ErrorMessage属性中捕获错误。msg = out.ErrorMessage;
要查看诊断查看器中的错误消息,请使用
sldiagviewer.reportSimulationMetadataDiagnostics函数。sldiagviewer.reportSimulationMetadataDiagnostics(out)
仿真返回的
Simulink.SimulationMetadata对象包含有关错误的附加信息,例如错误发生的仿真阶段。错误信息存储在ExecutionInfo属性的ErrorDiagnostic字段中。e = out.SimulationMetadata.ExecutionInfo.ErrorDiagnostic;
数据类型: char | string
启动编程仿真调试会话的选项,指定为 "off" 或 "on"。
仅当将 sim 函数的第一个输入指定为模型名称或句柄时,才支持此参量。
示例: out = sim("MyModel",Debug="on");
数据类型: char | string
禁用重新编译快速加速模式目标的选项,指定为 "on" 或 "off"。
"on"- 在每个仿真之前,软件会检查对模型的任何更改是否需要重新编译快速加速模式目标。如果某项更改需要重新编译快速加速模式目标,软件会在运行仿真之前重新编译目标。"off"- 软件不检查对模型的更改是否需要重新编译快速加速模式目标,并且始终运行仿真而不重新编译目标。需要重新编译快速加速模式目标的模型更改将被忽略,并且不会反映在仿真中。
仅当将 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
输出参量
仿真结果和元数据,以 Simulink.SimulationOutput 对象、Simulink.SimulationOutput 对象数组或向量形式返回。Simulink.SimulationOutput 对象包含从仿真记录的所有数据以及元数据,例如时序信息和诊断信息。
为了确保 sim 以一致的格式返回任何语法的结果,请在启用单一仿真输出配置参数的情况下保存模型。
如果满足以下所有条件,sim 函数将返回由仿真时间步组成的向量:
唯一的输入参量是模型名称。
单一仿真输出参数处于禁用状态。
快速重启处于禁用状态。
提示
要以相同格式为每个语法返回结果,请在启用单一仿真输出参数的情况下保存模型。以单个对象形式返回所有仿真数据和元数据有助于分析多个仿真的结果。
要控制脚本化仿真期间的执行并调节参数值,请使用
Simulation对象。 (自 R2024a 起)有关详细信息,请参阅以编程方式运行仿真。要同时使用 MATLAB 命令行窗口和 Simulink 编辑器与仿真交互,请使用
set_param函数发出仿真命令。有关详细信息,请参阅以编程方式运行仿真。使用
sim函数运行仿真时,仿真会一直运行,直到出现错误或仿真到达指定的停止时间。当您仿真停止时间为无限长的模型时,通过按 Ctrl+C 键从 MATLAB 命令行窗口停止仿真。仿真停止,仿真结果不会保存在 MATLAB 工作区中。
当
StopFcn模型回调执行时,编程仿真的结果不可用。要处理仿真结果,请改用Simulink.SimulationInput对象的PostSimFcn回调。使用“配置参数”对话框配置时间、状态和输出的记录。在建模选项卡上的设置下,点击模型设置。然后,在“配置参数”对话框中,选择数据导入/导出。
要记录整个模型中的信号,请使用信号记录或记录模块,如 To Workspace 模块或 Record 模块。有关详细信息,请参阅 使用信号记录保存信号数据。
版本历史记录
在 R2006a 之前推出当您使用 sim 函数运行普通或加速模式仿真且模型处于打开状态时,模型的 Simulink 编辑器窗口底部的状态栏会更新以显示仿真期间的当前仿真时间。
在以前的版本中,如果除标量 Simulink.SimulationInput 对象外还指定了一个或多个名称-值参量,包括 StopOnError 名称-值参量,则 sim 函数会覆盖单个仿真的 CaptureErrors 参数。现在,sim 函数具有一致的默认行为和选项,如下表所示。
Simulink.SimulationInput 维度 | CaptureErrors | StopOnError | 行为更改 |
|---|---|---|---|
| 标量 | 默认为 要启用此参数,请使用 | 运行单个仿真时,此名称-值参量不起作用。 | 在以前版本的脚本或函数中,对 |
| 向量、矩阵、数组 | 始终为 "on"。 | 默认为 将此名称-值参量指定为 | 没有变化。 |
您可以配置 Simulink.SimulationInput 对象,以便使用 sim 函数和标量 Simulink.SimulationInput 对象为运行的单个仿真启用快速重启。快速重启会只针对启用了快速重启的第一个仿真编译一次模型,从而节省迭代仿真工作流中的时间。如果您使用 sim 函数为单个仿真启用快速重启,则在仿真结束时,FastRestart 参数会在模型中保持启用状态,并且模型回在快速重启模式下进行初始化。
FastRestart 参数仅适用于一次运行一个仿真的情形。要对使用 Simulink.SimulationInput 对象数组一起运行的多个仿真使用快速重启,请使用 UseFastRestart 名称-值参量。
代码分析器对返回多个输出参量的 sim 函数调用发出警告。从 R2009b 开始,推荐使用单一仿真输出语法,不推荐使用多输出语法。
以后的版本将不再支持返回多个输出参量的语法。
对于新模型,单一仿真输出参数默认处于启用状态。当您对启用了单一仿真输出参数的模型进行仿真时,仿真始终以单一 Simulink.SimulationOutput 对象形式返回仿真结果。
我们从 R2009b 开始便推荐您使用 sim 函数的单一仿真输出语法。为确保 sim 函数始终以一致的格式返回仿真结果,请在启用单一仿真输出参数的情况下保存模型。
sim 函数具有新语法来支持使用一个或多个 Simulink.SimulationInput 对象配置仿真。Simulink.SimulationInput 对象表示仿真的设定,包括仿真中要使用的初始状态或工作点、外部输入、模型参数值、模块参数值和变量值。Simulink.SimulationInput 对象上的值会覆盖用于仿真的模型中保存的值,但不会修改或弄脏模型。
Simulink.SimulationInput 对象提供改进的支持,推荐与新的 parsim 函数一起用于并行仿真。
使用新的单一输出语法,您可以将所有仿真结果和元数据以单个输出参量的形式返回。单一仿真输出是一个 Simulink.SimulationOutput 对象,其中包含仿真中记录的所有数据以及仿真元数据。返回单一输出参量能够更好地支持并行仿真,并有助于分析多个仿真的结果。
要始终将仿真结果作为单一输出返回,请在启用单一仿真输出参数的情况下保存您的模型。
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 = out.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)