Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

sim

动态系统仿真

说明

simOut = sim(model) 使用现有模型配置参数对指定模型进行仿真,并将结果返回为 Simulink.SimulationOutput 对象(单输出格式)或者与 Simulink 版本 R2009a 或更早版本兼容的时间向量。请参阅向后兼容语法

要返回使用单输出格式(仿真对象)的仿真结果,默认情况下选择 Configuration Parameters 对话框的 Data Import/Export 窗格中的 Single simulation output。此选择会覆盖用于信号记录的 Dataset 格式。

要返回使用向后兼容格式(时间向量)的仿真结果,请参阅向后兼容语法

simOut = sim(model,Name,Value) 使用参数名称-值对组对指定模型进行仿真。

示例

simOut = sim(model,ParameterStruct) 使用结构体 ParameterStruct 中指定的参数值对指定模型进行仿真。

示例

simOut = sim(model,ConfigSet) 使用模型配置集 ConfigSet 中指定的配置设置对指定模型进行仿真。

示例

simOut = sim(model,'ReturnWorkspaceOutputs','on') 使用现有模型配置参数对指定模型进行仿真,并将结果返回为 Simulink.SimulationOutput 对象(单输出格式)。

simOut = sim(simIn) 使用 SimulationInput 对象 simIn 中指定的输入对模型进行仿真。sim 命令也可用于 SimulationInput 对象数组,以运行一个系列中的多个仿真。如果 simInSimulink.SimulationInput 对象的数组,输出将以 Simulink.SimulationOutput 对象数组形式返回。

示例

使用结构体形式的 sim 命令行选项对模型进行仿真

在绝对容差为 1e-5 的条件下以 Rapid Accelerator 模式对模型 vdp 进行仿真,并将状态保存在 xoutNew 中,将输出保存在 youtNew 中。

使用名称-值对组结构体 paramNameValStructsim 命令指定参数:

paramNameValStruct.SimulationMode = 'rapid';
paramNameValStruct.AbsTol         = '1e-5';
paramNameValStruct.SaveState      = 'on';
paramNameValStruct.StateSaveName  = 'xoutNew';
paramNameValStruct.SaveOutput     = 'on';
paramNameValStruct.OutputSaveName = 'youtNew';
simOut = sim('vdp',paramNameValStruct)
### Building the rapid accelerator target for model: vdp
### Successfully built the rapid accelerator target for model: vdp
simOut = 
  Simulink.SimulationOutput:

                xoutNew: [65x2 double] 
                youtNew: [65x2 double] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

使用配置集形式的 sim 命令行选项对模型进行仿真

在绝对容差为 1e-5 的条件下以 Rapid Accelerator 模式对模型 vdp 进行仿真,并将状态保存在 xoutNew 中,将输出保存在 youtNew 中。

在配置集 mdl_cs 中为 sim 命令指定名称-值对组形式的参数:

mdl = 'vdp';
load_system(mdl)
simMode = get_param(mdl, 'SimulationMode');
set_param(mdl, 'SimulationMode', 'rapid')
cs = getActiveConfigSet(mdl);
mdl_cs = cs.copy;
set_param(mdl_cs,'AbsTol','1e-5',...
         'SaveState','on','StateSaveName','xoutNew',...
         'SaveOutput','on','OutputSaveName','youtNew')
simOut = sim(mdl, mdl_cs);
### Building the rapid accelerator target for model: vdp
### Successfully built the rapid accelerator target for model: vdp
set_param(mdl, 'SimulationMode', simMode)

使用默认参数设置对模型进行仿真

使用默认模型配置参数对模型 vdp 进行仿真。

simOut = sim('vdp','ReturnWorkspaceOutputs','on')

输入参数

全部折叠

要仿真的模型的名称,指定为字符向量。

示例: simOut = sim('vdp')

该结构体中包含的字段是用于仿真的配置参数的名称。对应的值为参数值。

示例: simOut = sim('vdp',paramNameValStruct)

模型的配置参数集。

示例: simOut = sim('vdp',mdl_cs)

通过指定模型名称创建的 SimulationInput 对象。有关详细信息,请参阅 Simulink.SimulationInput

示例: simIn = Simulink.SimulationInput('vdp')

使用 SimulationInput 对象为要仿真的模型指定模块参数、模型参数、变量和外部输入。

示例: simIn = simIn.setBlockParameter('CSTR/Feed Temperature', 'Value', '300'); simIn = simIn.setModelParameter('StartTime', '1'); simIn = simIn.setVariable('FeedTemp0', 320)

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须显示在引号内。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN

示例: 'Solver','ode15s','TimeOut','30' 指定使用 ode15s 求解器对模型进行仿真,最长仿真时间为 30 秒。

sim 命令接受名称-值对组参数形式的所有仿真参数。

此外,sim 命令还接受以下不被 Configsetset_param 支持的参数。

默认情况下,如果在仿真期间发生错误,sim 命令会停止,并在 MATLAB 命令行窗口中报告该错误。如果指定 'CaptureErrors','on'sim 命令不会停止,而是将所有错误保存到 SimulationMetadata 对象内的 ErrorDiagnostic 结构体中。错误消息保存在 SimulationOutput 对象的 ErrorMessage 属性中。

在循环中运行多个仿真时,此选项非常有用,这样一个仿真错误不会阻止脚本或函数继续执行。

如果您指定输入对象数组,sim 命令将在 CaptureErrors 处于启用状态的模式下运行。如果发生错误,错误消息以及出现故障之前的仿真数据将包含在仿真的 Simulink.SimulationMetadata 对象中。

此选项不适用于 SIL 和 PIL 模式下的仿真。

示例: 'CaptureErrors','on'

(仅限于 Rapid Accelerator 模式)如果符合以下情况,则将此后缀字符向量追加到模型文件名后面(在文件扩展名前面):

  • 模型中包含一个 To File 模块。

  • parfor 中调用 sim 命令。

示例: 'ConcurrencyResolvingToFileSuffix','model'

'Debug' 参数的值设置为 'on' 将在调试模式下开始仿真(有关详细信息,请参阅Debugger Graphical User Interface)。此选项的值可以是 Debugger 启动后要发送给它的命令元胞数组。

示例: 'Debug','on'

当您启用 LoggingToFile 名称-值对组以记录到持久性存储时使用。指定数据记录的目标 MAT 文件。

提示

不要将一个区域设置中的文件名用于其他区域设置。

示例: 'LoggingFileName','out.mat'

将使用 Dataset 格式的记录数据保存到持久存储(MAT 文件)。

当记录大量数据可能会导致内存问题时,请使用此功能。有关详细信息,请参阅Log Data to Persistent Storage

提示

为避免在访问存储的数据时内存不足,可以使用引用来访问 MAT 文件中存储的对象。使用 Simulink.SimulationData.DatasetRef 对象通过引用访问存储的数据。使用此对象会将信号记录和状态数据以增量方式(一个信号接一个信号)加载到模型工作区中。如果访问其他类型的记录数据,则会一次性加载所有数据。

示例: 'LoggingToFile','on'

(仅限于 Rapid Accelerator 模式)返回包含运行时参数的结构体,这些参数用于在 parfor 中运行 Rapid Accelerator 仿真。

示例: 'RapidAcceleratorParameterSets',parameterSet(idx)

(仅限于 Rapid Accelerator 模式)启用/禁用最新检查。如果您将此值设置为 'off',Simulink® 将不执行最新检查。它会跳过模块中的 start/stop 回调。如果您从 parfor 中调用 sim 命令,请将此值设置为 'off'

将此选项设置为 'off' 时,您对模型中的模块参数值所做的更改(例如,通过模块对话框、通过 set_param 函数或通过更改 MATLAB® 变量的值所做的更改)不会影响仿真。相反,使用 RapidAcceleratorParameterSets 可将新参数值直接传递给仿真。

示例: 'RapidAcceleratorUpToDateCheck','off'

指定用来计算模型中定义的 MATLAB 表达式的工作区。设置 SrcWorkspace 对在 Accelerator 模式下执行的引用模型没有任何影响。在 parfor 循环内将 SrcWorkspace 设置为 current 会导致透明度违反。

示例: 'SrcWorkspace','current'

以秒为单位指定允许仿真运行的时间。如果您运行模型的时间超过 TimeOut 的值,软件将发出警告并停止仿真。TimeOut 指仿真所花费的时间。

示例: 'TimeOut',60

启用仿真追踪工具(以逗号分隔的列表形式指定一个或多个工具)︰

  • 'minstep' 指定当解突然变化而导致可变步长求解器无法执行且无法满足误差容限时停止仿真。

  • 'siminfo' 提供仿真开始时有效仿真参数的简短摘要。

默认情况下,Simulink 会发出警告消息并继续仿真。

示例: 'Trace','minstep','Trace','siminfo','Trace','compile'

输出参数

全部折叠

包含所有记录的仿真结果的 Simulink.SimulationOutput 对象。

在单个 Simulink.SimulationOutput 对象中返回所有仿真输出(记录的时间、状态和信号)。您使用 Model Configuration Parameters 对话框的 Data Import/Export 窗格来定义所记录的模型时间、状态和输出。您可以使用 To WorkspaceScope 等模块记录信号。Viewers and Generators Manager 可以直接记录信号。

注意

 sim 命令的输出始终返回到单一的仿真输出对象 SimOut。而仿真输出对象又返回到工作区。

详细信息

全部折叠

向后兼容语法

从 R2009b 开始,增强了 sim 命令,以便更好地兼容并行计算。改进的单输出格式将所有仿真结果保存到单个对象中,从而简化输出变量的管理。

要向后兼容 R2009a 或更早版本,请使用向后兼容语法:

[T,X,Y] = sim('model',Timespan, Options, UT)
[T,X,Y1,...,Yn] = sim('model',Timespan, Options, UT)

如果仅指定 model 参数,Simulink 会自动将时间、状态和输出保存到指定的输出参数。

如果不指定任何输出参数,Simulink 将基于 Configuration Parameters > Data Import/Export 窗格中的设置来确定记录哪些数据。Simulink 将基于 Save simulation output as a single object 参数的设置,将仿真输出保存到当前工作区或变量 ans 中。

向后兼容语法的输入和输出参数
参数说明
T

返回的时间向量。

X

以矩阵或结构体格式返回的状态。状态矩阵中包含连续状态,后跟离散状态。

Y

以矩阵或结构体格式返回的输出。对于模块图模型,此变量包含所有根级模块。

Y1,...,Yn

输出端口,只能为块图模型指定。这里的 n 必须是根级模块的数量。每个输出端口在 Y1,...,Yn 变量中返回。

'model'

要仿真的模型的名称。

Timespan

时间范围可以是 TFinal[TStart TFinal][TStart OutputTimes TFinal]。输出时间是在 T 中返回的时间点,但一般情况下 T 还包括其他时间点。

Options

结构体形式的可选仿真参数,由 simset 命令使用名称-值对组创建。

UT

可选的外部输入。要了解支持哪些表达式,请参阅将数据加载到根级输入端口

Simulink 只需要 model 参数。Simulink 从模块图获得所有默认值,包括未指定的选项。如果您指定了任何可选参数,您指定的设置将覆盖模块图中的设置。

sim 的输入参数指定为空矩阵 [ ] 将使得 Simulink 使用该参数的默认值。

向后兼容语法示例

以下命令使用 vdp 模型仿真 Van der Pol 方程。该命令使用所有默认参数。

[t,x,y] = sim('vdp')

以下命令使用与 vdp 模型关联的参数值仿真 Van der Pol 方程。

[t,x,y] = sim('vdp', [0 10]);

提示

  • 使用 sim 命令指定的参数将覆盖 Model Configuration Parameters 对话框中定义的值。软件将在仿真结束时恢复原始配置值。

  • 如果一个模型中包含 model reference 模块,参数设定将应用于顶层模型。

  • 当仿真模型的停止时间为无限长时,要停止仿真,必须按 Ctrl+CCtrl+C 会中断仿真,并且仿真结果不会保存在 MATLAB 工作区中。

  • 要指定仿真的时间跨度,必须指定 StartTimeStopTime 参数。

  • 要记录模型时间、状态或输出,请使用 Model Configuration Parameters 对话框的 Data Import/Export 窗格。

  • 要记录信号,请使用 To WorkspaceScope 等模块,或者使用 Viewers and Generators Manager 直接记录结果。

  • 要获取模型 vdp 的仿真参数列表,请在 MATLAB 命令行窗口中输入:

    configSet = getActiveConfigSet('vdp')
    configSetNames = get_param(configSet, 'ObjectParameters')  

    此命令列出多个对象参数,包括仿真参数,如 'StopTime''SaveTime''SaveState''SaveOutput''SignalLogging'

在 R2006a 之前推出