利用RSim系统目标文件在主机上加速、优化和测试混合动态系统
在您创建模型之后,您可以使用快速仿真(RSim)系统目标文件来描述模型行为。构建过程产生的可执行程序用于开发计算机上的非实时执行。可执行程序高度优化模拟混合动态系统的模型,包括使用变步长求解器和过零检测的模型。生成代码的速度使得RSim系统目标文件非常适合构建用于批处理或蒙特卡洛模拟的程序。
关于快速仿真
使用RSim目标来生成一个运行快速、独立模拟的可执行文件。您可以使用不同的数据集,以交互方式或编程方式使用脚本重复模拟,而无需重新构建模型。这可以加速模型行为和代码生成测试的描述和调优。
使用命令行选项:
在一个或多个mat文件中定义参数值和输入信号,您可以在模拟开始时加载和重新加载这些文件,而无需重新构建模型。
将日志数据重定向到一个或多个mat文件,然后可以对其进行分析和比较。
控制仿真时间。
指定外部模式选项。
请注意
要运行RSim可执行文件,请将计算机配置为运行MATLAB®会MATLAB和Simulink万博1manbetx®安装文件夹可访问。要部署一个独立的主机可执行文件(即,没有安装MATLAB和Simulink),可以考虑使用基于主机的共享库目标(ert_shrlib万博1manbetx)。
快速仿真优势
从快速模拟中获得的优势是不同的。较大的模拟可实现比标准Simulink模拟快10倍的速度提升。万博1manbetx有些模型在模拟速度上可能没有明显的提高。要确定模型的速度差异,请计算标准Simulink仿真的时间,并将结果与快速仿真进行比较。万博1manbetx此外,在快速加速器仿真模式下测试模型仿真。
通用快速仿真工作流程
与基于模型的设计的其他阶段一样,模型行为的描述和调优是一个迭代过程,如图中的通用工作流图所示。工作流中的任务包括:
识别快速模拟需求
建立快速仿真的第一步是确定您的仿真需求。
问题…… | 有关更多信息,请参见… |
---|---|
您希望模拟运行多长时间? | 配置和建立快速仿真模型 |
有求解器要求吗?您是否期望使用与快速模拟模型配置相同的求解器? | 配置和建立快速仿真模型 |
您的快速模拟需要适应灵活的自定义代码接口吗?或者,您的模拟是否需要保留存储类设置? | 配置和建立快速仿真模型 |
你会使用多个数据集进行模拟吗? | 建立快速模拟输入数据 |
输入数据是由全局参数、信号还是两者都包含? | 建立快速模拟输入数据 |
哪种类型的源块为模型提供输入数据——来自文件、导入、来自工作区? | 建立快速模拟输入数据 |
将模型的参数向量( )作为输入资料? |
创建一个包含模型参数结构的mat文件 |
输入参数和信号的数据类型是什么? | 建立快速模拟输入数据 |
源数据是由一个变量还是多个变量组成? | 建立快速模拟输入数据 |
输入数据是否包含可调参数? | 创建一个包含模型参数结构的mat文件 |
您是否需要访问可调参数信息——模型校验和和参数数据类型、标识符和复杂性? | 创建一个包含模型参数结构的mat文件 |
您是否需要在模拟运行时改变模拟停止时间? | 配置和建立快速仿真模型而且覆盖模型仿真停止时间 |
要设置模拟的时间限制吗?如果您的模型经常经历过零,并且步长较小,请考虑设置时间限制。 | 设置快速模拟的时钟时间限制 |
您是否需要保存每个模拟运行的输出? | 为模拟指定一个新的输出文件名而且为文件块指定新的输出文件名 |
您希望以交互方式还是批处理模式运行模拟? | 批处理和蒙特卡罗模拟脚本 |
配置导入以提供仿真源数据
你可以使用轮廓尺寸块作为快速模拟的输入数据来源。为此,配置这些块,以便它们可以从外部mat文件导入数据。默认情况下,轮廓尺寸块从下游块继承参数设置。在大多数情况下,要从外部mat -文件导入数据,必须显式地设置这些块参数以匹配mat -文件中的源数据。
主要>插入数据
信号的属性>港维
信号的属性>数据类型
信号的属性>信号类型
如果您无法控制模型内容,您可能需要修改mat文件中的数据,以符合模型对输入的期望。输入数据的特性和规格轮廓尺寸接收数据的块必须匹配。
有关调整这些参数和创建mat文件以用于轮廓尺寸块,看为导入块创建一个mat文件.上述块参数说明请参见轮廓尺寸.
配置和建立快速仿真模型
确定快速仿真需求后,配置快速仿真模型。
设定模型配置参数系统目标文件来
rsim.tlc
(快速模拟目标)。点击RSim目标浏览RSim目标窗格。
为您的快速仿真需求设置RSim目标配置参数。
如果你想… 然后…… 生成允许RSim可执行文件从mat文件加载参数的代码 选择启用RSim可执行文件从mat文件加载参数(默认)。 让目标根据已经为模型配置的求解器选择一个求解器 集解算器的选择来
汽车
(默认)。类上指定了固定步解算器,则代码生成器使用内置解算器解算器窗格或如果指定了可变步长求解器,则调万博1manbetx用Simulink求解器模块(共享库)。显式地指示目标使用固定步长求解器 集解算器的选择来 使用固定步长求解器
.在“配置参数”对话框中,在解算器窗格中,指定固定步骤求解器。显式地指示目标使用可变步长求解器 集解算器的选择来
使用Si万博1manbetxmulink求解器模块
.在“配置参数”对话框中,在解算器窗格中,指定可变步长求解器。强制存储类为 汽车
为灵活的自定义代码接口选择强制存储类为AUTO(默认)。 保留存储类设置,例如 ExportedGlobal
或ImportedExtern
,因为申请需要清晰的强制存储类为AUTO. 设置数据导入和导出选项。在数据导入/导出窗格,在保存到工作区部分,选择时间,州,输出,最终状态参数,当它们应用时。默认情况下,代码生成器将模拟日志记录结果保存到一个名为
.有关更多信息,请参见导出仿真数据.模型
.mat如果您正在使用外部模式通信,请使用代码生成>接口窗格。看到参数调优、信号监控和代码执行分析的外部模式模拟获取详细信息。
新闻Ctrl + B.代码生成器构建高度优化的可执行程序,您可以在开发计算机上使用不同的数据运行该程序,而无需重新构建。
控件兼容的编译器的详细信息万博1manbetx仿真软件编码器™产品,请参阅选择并配置C或c++编译器而且模板制作文件和制作选项.
建立快速模拟输入数据
关于快速模拟数据设置
用于快速模拟的输入数据的格式和设置取决于您的需求。
如果输入数据源是… | 然后…… |
---|---|
模型的全局参数向量( ) |
使用rsimgetrtp 函数获取矢量内容,然后将其保存到mat文件中。 |
模型的全局参数向量,你想要一个向量和可调参数之间的映射 | 调用rsimgetrtp 函数获取全局参数结构,然后将其保存到mat文件中。 |
由从文件块 | 创建一个mat文件从文件Block可读。 |
由轮廓尺寸块 | 创建一个mat文件,该文件遵循的三种数据文件格式之一轮廓尺寸Block可读。 |
由从工作空间块 | 在MATLAB工作区中创建结构变量。 |
RSim目标要求使用mat文件作为输入从文件而且轮廓尺寸块包含数据。的通
target将mat文件数据直接插入到生成的代码中,然后将其编译并链接为可执行文件。相反,RSim允许您为每个连续的模拟替换数据集。一个mat文件包含从文件或轮廓尺寸必须显示块数据,如果从文件块或轮廓尺寸块存在于您的模型中。
创建一个包含模型参数结构的mat文件
若要创建包含模型全局参数结构(
),模型
_P
通过调用函数来获取结构
rsimgetrtp
.将参数结构保存到mat文件中。
如果要在变化的数据集上运行模拟,请考虑将参数结构转换为单元格数组,并将参数变化保存到单个mat文件中。
获取模型的参数结构。获取全局参数结构(
)为模型调用函数模型
_Prsimgetrtp
.
param_struct= rsimgetrtp ('模型')
论点 | 描述 |
---|---|
|
您正在为其运行快速模拟的模型。 |
的rsimgetrtp
函数强制为指定的模型执行更新图操作,并返回包含以下字段的结构。
场 | 描述 |
---|---|
modelChecksum |
编码模型结构的四元素向量。代码生成器使用校验和来检查自生成RSim可执行文件以来模型的结构是否已经更改。如果您删除或添加一个块,然后生成一个新的模型 _P 向量,新的校验和不再匹配原来的校验和。RSim可执行文件在参数向量中检测这种不兼容性并退出以避免返回不正确的模拟结果。如果模型结构发生变化,您必须为模型重新生成代码。 |
参数 |
包含模型全局参数的结构。 |
参数结构包含如下信息。
场 | 描述 |
---|---|
dataTypeName |
参数数据类型的名称,例如,双 |
dataTypeID |
代码生成器使用的内部数据类型标识符 |
复杂的 |
如果为实值,则为0;1如果复杂 |
dtTransIdx | 代码生成器使用的内部数据索引 |
值 | 与此结构相关联的参数值的向量 |
地图 | 该字段包含将“值”与模型的可调参数相关联的映射信息。此映射信息与rsimsetrtpparam ,用于创建后续文件rtP 结构,而不编译框图。 |
代码生成器根据其存储值报告一个可调定点参数。例如,sfix (16)
参数值1.4
缩放到2 ^ 8
值为358
作为一个int16
.
在下面的例子中,rsimgetrtp
返回示例模型的参数结构rtwdemo_rsimtf
来param_struct
.
Param_struct = rsimgetrtp(“rtwdemo_rsimtf”)
param_struct = modelChecksum: [1.7165e+009 3.0726e+009 2.6061e+009 2.3064e+009] parameters: [1x1 struct]
将参数结构保存到mat文件中。你给我打个电话后rsimgetrtp
,将函数调用的返回值保存到mat文件中。使用命令行选项,您可以将mat文件指定为快速模拟的输入。
下面的示例保存返回的参数结构rtwdemo_rsimtf
到mat文件myrsimdemo.mat
.
保存myrsimdemo.matparam_struct;
有关使用命令行选项指定所需文件的信息,请参见运行快速模拟.
转换参数结构以运行在变化数据集上的模拟。若要使用快速模拟来测试对特定参数的更改,可以将模型参数结构转换为单元格数组。然后,您可以通过使用@操作符来指定文件中特定参数集的索引来访问特定的参数集。
将结构转换为单元格数组:
使用函数
rsimgetrtp
获取包含示例模型参数信息的结构rtwdemo_rsimtf
.将结构存储在变量中param_struct
.Param_struct = rsimgetrtp(“rtwdemo_rsimtf”);
的
参数
结构的字段是包含参数信息的子结构。的值
字段参数
子结构包含在执行模拟代码期间可以调优的参数的数值。使用函数
rsimsetrtpparam
扩展结构,使其包含更多参数集。在本例中,创建另外两个参数集(总共三个集)。Param_struct = rsimsetrtpparam(Param_struct,3);
函数转换
参数
字段转换为包含三个元素的单元格数组。每个元素包含单个参数集的信息。默认情况下,该函数通过复制单元格数组的第一个元素来创建单元格数组的第二个和第三个元素。因此,所有参数集使用相同的参数值。为第二个和第三个参数集中的参数指定新值。
param_struct.parameters{2}。值= [-150 -5000 0 4950]; param_struct.parameters{3}.values = [-170 -5500 0 5100];
将包含参数集信息的结构保存到mat文件中。
保存rtwdemo_rsimtf.matparam_struct;
或者,您可以修改模型中的块参数,并使用rsimgetrtp
创建多个参数集:
使用函数
rsimgetrtp
获取包含示例模型参数信息的结构rtwdemo_rsimtf
.将结构存储在变量中param_struct
.Param_struct = rsimgetrtp(“rtwdemo_rsimtf”);
使用函数
rsimsetrtpparam
扩展结构,使其包含更多参数集。在本例中,创建另外两个参数集(总共三个集)。Param_struct = rsimsetrtpparam(Param_struct,3);
函数转换
参数
字段转换为包含三个元素的单元格数组。每个元素包含单个参数集的信息。默认情况下,该函数通过复制单元格数组的第一个元素来创建单元格数组的第二个和第三个元素。因此,所有参数集使用相同的参数值。更改块参数或工作区变量的值。例如,改变变量的值
w
从70
来72
.W = 72;
使用
rimsgetrtp
获取另一个包含参数信息的结构。将结构存储在临时变量中rtp_temp
.Rtp_temp = rsimgetrtp(“rtwdemo_rsimtf”);
的值赋值
参数
领域的rtp_temp
结构方面param_struct
作为第二个参数集。param_struct。参数{2} = rtp_temp.parameters;
改变变量的值
w
从72
来75
.W = 75;
使用
rimsgetrtp
获取另一个包含参数信息的结构。的值参数
字段param_struct
作为第三个参数集。Rtp_temp = rsimgetrtp(“rtwdemo_rsimtf”);param_struct。参数{3} = rtp_temp.parameters;
将包含参数集信息的结构保存到mat文件中。
保存rtwdemo_rsimtf.matparam_struct;
有关在运行模拟时如何指定每个参数集的详细信息,请参见更改RSim模拟的块参数.
为From File块创建一个MAT-File
类的输入数据源可以使用mat文件从文件块。mat文件中的数据格式必须与该块所期望的数据格式相匹配。例如,如果您使用矩阵作为MAT文件的输入,那么它不能与可执行文件的矩阵大小不同。
创建一个mat文件从文件布洛克:
对于数组格式数据,在工作空间中创建由两行或多行组成的矩阵。第一行必须包含单调递增的时间点。其他行包含与该列中的时间点对应的数据点。时间和数据点必须是数据类型
双
.例如:
t =(0:0.1:2 *π)';Ina1 = [2 * sin (t) 2 * cos (t));Ina2 =罪(2 * t);Ina3 = [0.5 * sin (3 * t) 0.5 * cos (3 * t)];var_matrix=[t Ina1 Ina2 Ina3]';
对于其他受支持的数据万博1manbetx类型,例如
int16
或者是定点,时间数据点必须是类型双
,就像数组格式数据一样。但是,示例数据可以是任何维度。的块描述,有关设置输入数据的详细信息从文件.
将矩阵保存到mat文件中。
下面的示例保存矩阵
var_matrix
到mat文件myrsimdemo.mat
版本7.3格式。保存“-v7.3”myrsimdemo.matvar_matrix;
使用命令行选项,您可以将mat文件指定为快速模拟的输入。
为导入块创建一个mat文件
类的输入数据源可以使用mat文件轮廓尺寸块。
mat文件中的数据格式必须遵循下表中列出的三种基于列的格式之一。该表按照从最不灵活到最灵活的顺序列出了格式。
格式 | 描述 |
---|---|
单时间/数据矩阵 |
有关示例,请参见单时间/数据矩阵在以下步骤中,请执行步骤4。有关更多信息,请参见将数据数组加载到根级输入. |
Signal-and-time结构 |
有关示例,请参见Signal-and-time结构在以下步骤中,请执行步骤4。有关此格式的详细信息,请参见将数据结构加载到根级输入. |
每个端口结构 |
有关示例,请参见每个端口结构在以下步骤中,请执行步骤4。有关更多信息,请参见将数据结构加载到根级输入. |
中说明了万博1manbetx所支持的格式和以下过程rtwdemo_rsim_i
.
创建一个mat文件轮廓尺寸布洛克:
选择上述数据文件格式之一。
更新轮廓尺寸块参数设置和规格,以匹配mat文件提供的数据规格。
默认情况下,轮廓尺寸块从下游块继承参数设置。若要从外部mat文件导入数据,请显式设置以下参数以匹配mat文件中的源数据。
主要>插入数据
信号的属性>港维
信号的属性>数据类型
信号的属性>信号类型
如果选择为工作区变量使用结构格式,则
时间
字段为空,清除块参数插入数据或修改参数,使其设置为非空值。插值需要时间数据。上述块参数说明请参见轮廓尺寸.
为模型构建一个RSim可执行程序。构建过程创建并计算模型的结构校验和,并将其嵌入生成的可执行文件中。RSim目标使用校验和来验证传递到模型中的数据是否与模型可执行文件所期望的一致。
创建mat文件,为快速模拟提供源数据。您可以从工作空间变量创建mat文件。使用前面格式比较表中的规范,为您的模拟创建工作空间变量。
以下是每种格式的示例:
单时间/数据矩阵
t =(0:0.1:2 *π)';Ina1 = [2 * sin (t) 2 * cos (t));Ina2 =罪(2 * t);Ina3 = [0.5 * sin (3 * t) 0.5 * cos (3 * t)];var_matrix=[t Ina1 Ina2 Ina3];
Signal-and-time结构
t =(0:0.1:2 *π)';var_single_struct.time = t;var_single_struct.signals (1) . values (: 1) = 2 * sin (t);var_single_struct.signals (1) . values (:, 2) = 2 * cos (t);var_single_struct.signals (2) . values =罪(2 * t);var_single_struct.signals (3) . values (: 1) = 0.5 * sin (3 * t);var_single_struct.signals (3) . values (:, 2) = 0.5 * cos (3 * t);v = [var_single_struct.signals (1) . values...var_single_struct.signals (2) . values...var_single_struct.signals (3) . values);
每个端口结构
t =(0:0.1:2 *π)';Inb1.time = t;Inb1.signals.values (: 1) = 2 * sin (t);Inb1.signals.values (:, 2) = 2 * cos (t);t =(0:0.2:2 *π)';Inb2.time = t;Inb2.signals.values(: 1) =罪(2 * t);t =(0:0.1:2 *π)';Inb3.time = t;Inb3.signals.values (: 1) = 0.5 * sin (3 * t); Inb3.signals.values(:,2)=0.5*cos(3*t);
将工作区变量保存到一个mat文件中。
单时间/数据矩阵
下面的示例保存工作区变量
var_matrix
到mat文件rsim_i_matrix.mat
.保存rsim_i_matrix.matvar_matrix;
Signal-and-time结构
下面的示例保存工作区结构变量
var_single_struct
到mat文件rsim_i_single_struct.mat
.保存rsim_i_single_struct.matvar_single_struct;
每个端口结构
将每个端口结构变量保存到单个mat文件时,若要对数据排序,请使用
保存
命令的附加
选择。确保按照模型期望的顺序添加数据。下面的示例保存工作区变量
Inb1
,Inb2
,政府间
对MAT-filersim_i_multi_struct.mat
.保存rsim_i_multi_struct.matInb1;保存rsim_i_multi_struct.matInb2附加;保存rsim_i_multi_struct.mat政府间附加;
的
保存
当将数据保存到mat文件时,命令不会保留在命令行中指定工作区变量的顺序。例如,如果你指定变量v1
,v2
,v3
,则MAT-file中变量的顺序可以为V2 v1 v3
.使用命令行选项,您可以指定mat文件作为快速模拟的输入。
批处理和蒙特卡罗模拟脚本
RSim目标用于批量模拟,其中参数和输入信号在多个模拟中是不同的。新的输出文件名允许您运行新的模拟,而不会覆盖先前的模拟结果。类型,可以设置要运行的一系列模拟。bat
用于微软的文件®窗户®平台。
使用文本编辑器为Windows平台创建一个文件,并通过输入文件名来执行它,例如,mybatch
,其中文本文件名为mybatch.bat
.
Rtwdemo_rsimtf -f Rtwdemo_rsimtf .mat=run1。Mat -o results1。Mat -tf 10.0rtwdemo_rsimtf- frtwdemo_rsimtf.mat=run2.mat -o results2.mat -tf 10.0 rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run3.mat -o results3.mat -tf 10.0 rtwdemo_rsimtf -f rtwdemo_rsimtf.mat=run4.mat -o results4.mat -tf 10.0
在本例中,批处理模拟使用文件中的四组输入数据运行run1.mat
,run2.mat
等等。类指定的文件中保存数据- o
选择。
每个文件中包含模拟结果的变量名是相同的。因此,在MATLAB工作空间中加载连续的数据集而不重命名数据会导致用新数据覆盖先前的工作空间变量。为了避免覆盖,可以在加载下一组数据之前将结果复制到新的MATLAB变量中。
您还可以编写MATLAB脚本来创建新的信号和新的参数结构,以及使用bang命令(!
).
有关运行模拟和可用命令行选项的详细信息,请参见运行快速模拟.有关快速模拟批处理脚本的示例,请参见示例运行批处理模拟而不重新编译生成的代码.
运行快速模拟
快速模拟
使用RSim目标,您可以一次构建模型并运行多次模拟,以研究不同参数设置和输入信号的影响。您可以直接从操作系统命令行运行模拟,通过使用bang(!)字符从MATLAB命令行重定向命令,或者从脚本执行命令。
从操作系统命令行,使用
rtwdemo_rsimtf
从MATLAB命令行,使用
rtwdemo_rsimtf !
…… | 使用…… |
---|---|
读取输入数据从文件块从一个mat文件,而不是以前的模拟使用的mat文件 |
|
打印RSim可执行目标的选项摘要 |
|
类的输入数据轮廓尺寸块从一个mat文件 |
|
结束后暂停n 时钟时间秒,凡n 是正整数值吗 |
|
将mat文件日志数据写入文件
|
|
从文件中读取参数向量
|
|
覆盖外部模式的默认TCP端口(17725) |
|
将mat文件日志记录数据写入mat文件,而不是之前模拟使用的mat文件 |
|
运行模拟直到时间值 达到 |
|
以verbose模式运行 |
|
等待Simulink引擎以万博1manbetx外部模式启动模型 |
|
下面的部分使用rtwdemo_rsimtf
在示例中使用示例模型来说明这些命令行选项。在每个示例中,假设您已经完成了以下操作:
已创建或更改为工作文件夹。
打开示例模型。
复制数据文件
到您的工作文件夹。可以通过以下命令执行该操作:matlabroot
/工具箱/ rtw / rtwdemos / rsimdemos / rsim_tfdata.mat拷贝文件(fullfile (matlabroot“工具箱”,“环球套票”、“rtwdemos”,…“rsimdemos”、“rsim_tfdata.mat”),pwd);
运行快速模拟的要求
以下需求适用于固定步长和可变步长可执行文件。
您必须在配置为运行MATLAB的计算机上运行RSim可执行文件。此外,
RSim.exe
文件必须能够访问此机器上的MATLAB和Simulink安装文件夹。万博1manbetx要获得访问权限,您的PATH环境变量必须包括/bin和/bin/($ARCH),其中($ARCH)表示您的操作系统架构。例如,对于运行在Windows平台上的个人计算机,($ARCH)是“win64”,而对于Linux机器,($ARCH)是“glnxa64”。在GNU®Linux®在平台上,要运行RSim可执行文件,定义LD_LIBRARY_PATH环境变量以提供MATLAB安装文件夹的路径,如下所示:
% setenv LD_LIBRARY_PATH /matlab/sys/os/glnx64:$LD_LIBRARY_PATH
在苹果Macintosh OS X平台,要运行RSim目标可执行文件,必须定义环境变量
DYLD_LIBRARY_PATH
要包含文件夹bin / mac
而且sys /操作系统/ mac
在MATLAB安装文件夹下。例如,如果您的MATLAB安装在MATLAB /
,添加/ MATLAB / bin / mac
而且/ MATLAB / sys / mac os /
的定义DYLD_LIBRARY_PATH
.
设置快速模拟的时钟时间限制
如果一个模型经常经历过零,并且模型的小步长很小,可以考虑为快速模拟设置一个时间限制。要设置时间限制,请指定- l
带有正整数值的选项。模拟在运行指定的时钟时间(不是模拟时间)后终止。例如,
rtwdemo_rsimtf -L 20
根据您的时钟,在可执行文件运行20秒后,程序将终止。您将看到一条类似于以下消息之一的消息:
在微软的Windows平台上,
正在退出程序,超过时间限制记录可用数据…
在开放组UNIX®平台,
**已接收到SIGALRM(报警)信号@星期五7月25日15:43:23 2003 **退出型号“vdp”@星期五7月25日15:43:23 2003
您不需要对您的模型或它的配置做任何事情来使用这个选项。
覆盖模型仿真停止时间
默认情况下,快速模拟将一直运行到模拟时间达到“配置参数”对话框中指定的时间为止解算器窗格。属性可以覆盖模型模拟停止时间- tf
选择。例如,下面的模拟运行到时间达到6.0秒。
rtwdemo_rsimtf -tf 6.0
RSim目标停止并使用mat文件数据日志规则记录输出数据。
如果模型包含从文件块时,模拟的结束由“配置参数”对话框中指定的停止时间设置来调节解算器窗格,或者使用RSim目标选项- tf
.块时间向量中的值将被忽略。但是,如果仿真时间超过时间和信号矩阵的端点(如果最终时间大于数据矩阵的最终时间值),则信号数据将外推到最终时间值。
将参数向量读入快速模拟
要将模型参数向量读入快速模拟,必须首先创建一个mat文件,其中包含中所述的参数结构创建一个包含模型参数结构的mat文件.属性在命令行中指定mat文件- p
选择。
例如:
为示例模型构建一个RSim可执行文件
rtwdemo_rsimtf
.修改模型中的参数并保存参数结构。
Param_struct = rsimgetrtp(“rtwdemo_rsimtf”);保存myrsimdata.matparam_struct
运行具有新参数设置的可执行文件。
!rtwdemo_rsimtf -p myrsimdata.mat
**启动模型'rtwdemo_rsimtf' @ Tue 12月27日12:30:16 2005 **创建了rtwdemo_rsimtf。垫* *
输入以下命令加载工作空间变量并绘制模拟结果:
负载rtwdemo_rsimf.mat情节(rt_yout)
为从文件块指定新的信号数据文件
如果模型的输入数据源是从文件块,您可以在模拟期间从单个mat文件向块提供输入数据,或者您可以从一个模拟更改mat文件到下一个模拟。每个mat文件必须遵循中描述的格式为From File块创建一个MAT-File.
要在初始模拟之后更改mat文件,可以使用- f
选项和
参数,如下例所示。oldfile
.mat =newfile中
.mat
在MATLAB工作区中设置一些参数。例如:
W = 100;Theta = 0.5;
为示例模型构建一个RSim可执行文件
rtwdemo_rsimtf
.运行可执行文件。
rtwdemo_rsimtf !
RSim可执行文件运行一组模拟,并创建包含特定模拟结果的输出mat文件。
输入以下命令加载工作区变量并绘制模拟结果:
负载rtwdemo_rsimtf.mat情节(rt_yout)
结果图显示了基于默认输入数据的模拟结果。
创建一个新的数据文件,
newfrom.mat
,包括以下数据:t = [0: .001:1];u =罪(100 * t。* t);你= (t, u);保存newfrom.mat你;
使用新数据运行快速模拟
- f
选项替换原来的文件,rsim_tfdata.mat
,newfrom.mat
.rtwdemo_rsimtf -f rsim_tfdata.mat=newfrom.mat
输入以下命令加载数据并绘制新结果:
负载rtwdemo_rsimtf.mat情节(rt_yout)
下一个图显示了结果图。
从文件块需要类型的输入数据双
.如果需要导入非数据类型的信号数据双
,使用轮廓尺寸块(见为导入块创建一个mat文件)或从工作空间块,并将数据指定为结构。
工作区数据的格式必须为:
变量。时间变量。信号.值
如果有多个信号,请使用以下格式:
变量。时间变量。信号(1).values variable.signals(2).values
为导入块指定信号数据文件
如果模型的输入数据源是轮廓尺寸块,您可以在模拟期间从单个mat文件向块提供输入数据,或者您可以从一个模拟更改mat文件到下一个模拟。中描述的三种格式之一是每个mat文件必须遵循的格式之一为导入块创建一个mat文件.
要在模拟之后指定mat文件,可以使用-我
选项和包含输入数据的mat文件的名称。例如:
打开模型
rtwdemo_rsim_i
.检查轮廓尺寸块参数设置。以下轮廓尺寸块数据参数设置和为工作区变量指定的规范必须与mat文件中的设置相匹配,如配置导入以提供仿真源数据:
主要>插入数据
信号的属性>港维
信号的属性>数据类型
信号的属性>信号类型
构建模型。
设置输入信号。例如:
t =(0:0.01:2 *π)';s1 = [2 * sin (t) 2 * cos (t));s2 =罪(2 * t);s3 = [0.5 * sin (3 * t) 0.5 * cos (3 * t)];Plot (t, [s1 s2 s3])
中描述的三种可用文件格式之一准备mat文件为导入块创建一个mat文件.下面的示例在工作空间中定义了一个信号和时间结构,并为其命名
var_single_struct
.t =(0:0.1:2 *π)';var_single_struct.time = t;var_single_struct.signals (1) . values (: 1) = 2 * sin (t);var_single_struct.signals (1) . values (:, 2) = 2 * cos (t);var_single_struct.signals (2) . values =罪(2 * t);var_single_struct.signals (3) . values (: 1) = 0.5 * sin (3 * t);var_single_struct.signals (3) . values (:, 2) = 0.5 * cos (3 * t);v = [var_single_struct.signals (1) . values...var_single_struct.signals (2) . values...var_single_struct.signals (3) . values);
保存工作区变量
var_single_struct
对MAT-filersim_i_single_struct
.保存rsim_i_single_struct.matvar_single_struct;
方法对输入数据运行快速模拟
-我
选择。加载并绘制结果。rtwdemo_rsim_i -i rsim_i_single_struct.mat
**启动模型'rtwdemo_rsim_i' @ Tue Aug 19 10:26:53 2014 *** rsim_i_single_struct。垫子加载成功!*** ** created rtwdemo_rsim_i. .垫* *** Execution time = 0.02024185130718954s
加载并绘制结果。
负载rtwdemo_rsim_i.mat情节(rt_tout rt_yout);
更改RSim模拟的块参数
如在创建一个包含模型参数结构的mat文件,在改变Simulink方框图中的一个或多个参数后,可以提取参数向量,万博1manbetx模型
_P
为整个模型。然后可以将参数向量以及模型校验和保存到mat文件中。这个mat文件可以由独立的RSim可执行文件直接读取,允许您替换整个参数向量或单个参数值,以运行表示系数的参数值变化的研究,输入信号的新数据,等等。
RSim可以读取mat文件并替换整个模型
_P
结构,当您更改一个或多个参数时,无需重新编译整个模型。
例如,假设您更改了模型中的一个或多个参数,生成了新的参数模型
_P
向量,然后保存模型
_P
到一个名为mymatfile.mat
.运行相同的程序rtwdemo_rsimtf
模型并使用这些新的参数值,使用- p
选项,示例如下:
!rtwdemo_rsimtf -p mymatfile.mat负载rtwdemo_rsimtf情节(rt_yout)
如果已将参数结构转换为单元格数组,以便在不同数据集上运行模拟,如转换参数结构以运行在变化数据集上的模拟,则必须添加一个@
后缀到mat文件规范。n
n
单元格数组的元素,其中包含要用于模拟的特定输入。
下面的示例转换param_struct
到单元格数组中,更改参数值,将更改保存到mat文件中mymatfile.mat
,然后使用单元格数组的第二个元素中的参数值作为输入运行可执行文件。
Param_struct = rsimgetrtp(“rtwdemo_rsimtf”);Param_struct = rsimsetrtpparam(Param_struct,2);param_struct.parameters {1}
ans = dataTypeName: 'double' datatype: 0 complex: 0 dtTransIdx: 0 values: [-140 -4900 0 4900] map: [] structParamInfo: []
param_struct.parameters{2}。值=[-150 -5000 0 4950]; savemymatfile.matparam_struct;!rtwdemo_rsimtf -p mymatfile.mat@2 -o rsim2.mat
为模拟指定一个新的输出文件名
属性中的一个或多个保存到工作区参数- - - - - -时间,州,输出,或最终状态—在“配置参数”对话框中,单击数据导入/导出窗格中,默认为将模拟日志记录结果保存到文件中模型
.mat
.例如,示例模型rtwdemo_rsimtf
通常将数据保存到rtwdemo_rsimtf.mat
,详情如下:
rtwdemo_rsimtf !创建rtwdemo_rsimtf.mat
属性可以为数据日志记录指定新的输出文件名- o
选项,当您运行可执行文件时。
rtwdemo_rsimtf -o rsim1.mat
在本例中,在代码生成时提供的参数集,包括从文件块数据参数,即运行。
为文件块指定新的输出文件名
与指定新的系统输出文件名的方式大致相同,还可以为从一个或多个系统中保存的数据提供新的输出文件名到文件块。要做到这一点,在代码生成时用一个新名称指定原始文件名,如下例所示:
rtwdemo_rsimtf -t rtwdemo_rsimtf_data.mat=mynewrsimdata.mat
在本例中,假设原始模型将数据写入输出文件rtwdemo_rsimtf_data.mat
.指定新文件名将强制RSim写入文件mynewrsimdata.mat
.使用这种技术,可以避免覆盖现有的模拟运行。
在快速仿真中交互式调整参数
RSim系统目标文件旨在让您以尽可能快的速度运行批模拟。使用系统目标文件和可调参数数据结构的可变步长或固定步长求解器,无论您是否设置默认参数行为来可调
或内联
,可以创建多个参数集。您可以使用生成的可执行程序(Windows上的.exe)运行数据集。每次调用可执行程序都允许指定用于结果的文件名。
在这个例子中,默认参数行为设置为内联
.该模型将工作区变量声明为可调参数。使用RSim系统目标文件默认参数行为设置为可调
,并且没有显式声明可调参数,请参见运行批处理模拟而不重新编译生成的代码.
开放范例模型
打开示例模型rtwdemo_rsim_param_tuning
.
open_system (“rtwdemo_rsim_param_tuning”);
该模型使用RSim目标和rsimgetrtp
函数允许非实时可执行文件传递新数据,而不需要重新编译Simulink模型。万博1manbetx该特性允许您获得模型中声明的可调参数的映射,并将其保存在mat文件中。然后,您可以创建自己的MATLAB GUI或独立的GUI(独立于MATLAB)来读写mat文件并重新运行可执行文件以生成新的输出文件。
在模型中,按顺序双击按钮以运行示例。
要查看用于创建MATLAB图形界面和独立图形界面的代码,请双击查看MATLAB程序按钮。
有关更多信息,请参见利用RSim系统目标文件在主机上加速、优化和测试混合动态系统.
快速仿真目标限制
RSim目标有以下限制:
不支持代数循环。万博1manbetx
不支持万博1manbetxMATLAB解释函数块。
不支持非内联的MA万博1manbetxTLAB语言或Fortran s函数。
如果RSim构建包含引用的模型(通过使用模型块),设置这些模型,使用固定步骤求解器为它们生成代码。然而,顶层模型可以使用可变步长求解器,只要参考模型中的块是离散的。
在某些情况下,更改块参数可能导致模型的结构更改,从而更改模型校验和。这种改变的一个例子是改变DSP模拟中的延迟数。在这种情况下,您必须为模型重新生成代码。