设置块参数值,如获得a的参数获得块中,您可以使用创建并存储在工作空间(如基本工作空间、模型工作空间或Simulink)中的数值变量金宝app®数据字典。您可以使用该变量在多个块中设置多个参数值,包括不同模型的块。要更改块参数的值,您需要更改工作区中变量的值。
使用变量设置块参数值还允许您:
更改参数值而不必修改模型文件(如果您将变量存储在模型工作区之外)。
在扫描或调优值时,使用特定的、有意义的名称标识参数。
有关设置块参数值的基本信息,请参见设置块参数值.
您可以创建一个数字MATLAB®变量,如基本工作空间或数据字典,并使用它指定一个或多个块参数值。
如果将块参数值设置为简单的数值表达式,则可以在“模型数据编辑器”中为该表达式创建变量建模选项卡上,单击模型数据编辑器).点击在与值对应的单元格的右侧,然后选择创建变量.在“创建新数据”对话框中,设置新变量的名称和位置,然后单击创建.单元格现在显示新变量。
您还可以创建一个变量来表示在多个表达式中使用的常量。示例模型sldemo_fuelsys
表示汽油发动机的加油系统。模型中的子系统,feedforward_fuel_rate
,用常数来计算发动机的燃料需求14.6
,表示发动机消耗的理想(化学计量)空气与燃料的比例。子系统中的两个块使用数字来设置参数的值。在本例中,为了在块之间共享数字,您创建了一个名为myParam
.
打开模型。
sldemo_fuelsys
在模型中,在建模选项卡上,单击模型数据编辑器.在模型数据编辑器中,检查参数选项卡。
在模型中,导航到子系统。
open_system (...“sldemo_fuelsys / fuel_rate_control fuel_calc / feedforward_fuel_rate ')
在“模型数据编辑器”中内容过滤框中,输入14.6
.
数据表包含两行,它们对应于恒定值参数的两个常数子系统中的块。
使用价值列来替换文字数14.6
与myParam
.执行两个参数的替换。
在内容过滤框中,输入myParam
.
在编辑其中一个参数的值时,单击操作按钮并选择创建.
在创建新数据对话框,设置价值来14.6
并点击创建.
的变量,myParam
,出现在基本工作区中。
因为变量存在于基本工作区中,所以您可以在多个模型中使用它。但是,当结束MATLAB会话时,会丢失基本工作区的内容。考虑永久地将变量存储在模型工作区或数据字典中。
要定义一个系统常数,例如表示地球半径的变量,可以考虑创建一个金宝app仿真软件。参数
对象,而不是数值MATLAB变量。参数对象允许您指定物理单位和自定义文档以及其他特征。
若要在模型中创建和使用参数对象,请参见数据对象.
通常,系统常数的值通过数学关系影响其他参数和信号的值。要显式地对这些关系建模,可以使用表达式设置依赖数据的值。看到使用数学表达式设置变量值.
可以将变量的值设置为包含文字数字和其他变量的表达式。使用表达式,你可以:
将值表示为已知物理常数之间的关系,而不是无法识别的文字数字。
显式地建模参数数据之间的代数依赖关系。当修改独立数据的值时,不需要记得调整依赖数据的值。
将变量转换为a金宝app仿真软件。参数
对象。然后,设置价值
属性:
交互式-例如,使用模型数据编辑器或模型资源管理器,在表达式前面加等号,=
.图中显示了如何指定表达式myVar + myOtherVar
.
以编程方式-使用slexpr
函数,以字符向量或字符串形式指定表达式。例如,设置名为myParam
到表达式myVar + myOtherVar
:
myParam。价值=slexpr(myVar + myOtherVar)
这个例子sldemo_metro
(见探讨一个模型的求解器雅可比结构)模拟了一个由三个相同的点状节拍器悬挂在一个移动平台上的系统。模型中的块使用这些来自基本工作区的MATLAB变量:
米
-每个节拍器的质量,初始值0.1 kg
r
-每个节拍器的长度,初始值为1.0米
J
-每个节拍器的转动惯量,初始值0.1 kg/m2
这些变量共享一个代数关系:每个节拍器的转动惯量等于质量乘以长度的平方。在本例中,您将在值中记录此关系J
.
打开模型。
sldemo_metro
更新框图。模型回调在基本工作区中创建变量。
为了防止回调覆盖您对变量所做的更改,对于本例,请删除回调代码。
set_param (“sldemo_metro”,“InitFcn”,”)
在模型中,在建模选项卡上,单击模型数据编辑器.
在模型数据编辑器上参数标签,激活变化范围按钮。
使用变量的块位于子系统中,因此您必须配置Model Data Editor以显示子系统中的数据。
单击显示/刷新其他信息按钮。
数据表包含与基本工作区中的变量对应的行。
在内容过滤框中,输入J
.
在数据表中,找到对应的行J
.在价值列中,将变量的值设置为金宝appSimulink.Parameter (J)
.
金宝app模型转换J
到一个金宝app仿真软件。参数
对象。
在价值列时,将参数对象的值设置为= m * r ^ 2
.
可选地,模拟不同节拍器质量和长度的模型。当你改变的值米
而且r
,则不必记得纠正值J
.
如果表达式包含定点数据或枚举类型的数据,则表达式只能操作一个变量或对象。
不能设置数据类型(数据类型
属性)使用表达式to的参数对象汽车
(默认值),并将表达式中出现的参数对象的数据类型设置为汽车
.例如,在表达式中J = m*r^2
的数据类型,不能设置J
来汽车
的数据类型米
而且r
来单
.
保留…的好处汽车
(描述的上下文敏感的数据类型)对于使用该表达式的对象,将表达式中对象的数据类型设置为汽车
.换句话说,就是使用汽车
对于所有涉及的对象。表达式中的对象获得与使用该表达式的对象相同的数据类型。
使用其他值汽车
对于表达式中出现的对象,将所有依赖参数对象的数据类型设置为以外的值汽车
.换句话说,不要使用汽车
对于任何涉及的对象。
表达式中使用的所有对象必须使用相同的数据类型。
如果你有金宝app仿真软件编码器™和嵌入式编码器®许可证,您可以通过使用表达式生成初始化全局变量的代码。但是,只有当表达式符合某些要求时,代码生成器才能保留表达式。看到表达式保存(金宝app仿真软件编码器).
的范围变量的是可以使用该变量的模型和块的集合。例如,您在基本工作空间中创建的变量具有全局作用域,因为所有开放模型中的所有块都可以使用这些变量。您存储在模型工作区中的变量具有有限的作用域,因为只有宿主模型中的块可以使用这些变量。
不能在同一个作用域中创建两个具有相同名称的变量。控制变量的作用域可以帮助您避免名称冲突,并建立变量的明确所有权。
下表描述了控制可重用参数值范围的不同方法。
范围 | 技术 |
---|---|
所有开放模型 | 在基本工作区中创建一个变量。 |
一个或多个目标模型 | 在数据字典中创建一个变量。要在多个模型中重用变量,请创建一个引用字典。看到什么是数据字典? |
一个模型,包括模型中的所有子系统 | 在模型工作区中创建一个变量。看到模型的工作区. |
子系统内的多个块,包括嵌套子系统中的块 | 掩码子系统并创建掩码参数而不是工作区变量。 若要防止子系统内的块使用工作区变量,请在子系统块对话框中设置允许分级解析来 |
当您有一个在相同作用域中具有许多变量的大型模型时,为了避免名称冲突,可以考虑将变量打包到单个结构中。有关更多信息,请参见在结构中组织相关块参数定义.
有关块如何使用指定的变量名的基本信息,请参见符号解析.
在基本工作空间中创建的变量不会在MATLAB会话之间持续存在。但是,您可以将变量存储在mat文件或脚本文件中,并在使用模型回调打开模型时加载该文件。一个模型回调是一组命令,当您以特定的方式(如打开模型)与模型交互金宝app时,Simulink将执行这些命令。您可以在打开模型时使用回调来加载变量。在学习Simulink和实验模型时,使用此技术存储变量。金宝app
的模型中获得块,设置的值获得参数K
.
在命令提示符下,创建一个变量K
在基本工作区中。
K = 27;
在Workspace浏览器中,右键单击变量并选择另存为.
要在一个文件中保存多个变量,请在Workspace浏览器中选择所有目标变量,然后右键单击所选变量中的任何一个。
在对话框中,设置另存为类型来MATLAB脚本
.集文件名称来loadvar
并点击保存.
脚本文件loadvar.m
显示在当前文件夹中。您可以打开该文件以查看创建变量的命令K
.
在模型中,在建模选项卡上,选择模型设置>模型属性.
在回调在“模型属性”对话框的页签中,选择PreLoadFcn
作为您想要定义的回调。在模型预加载函数面板中,输入loadvar
并点击好吧.
保存模型。
下次打开模型时PreloadFcn
回调函数加载变量K
进入基本工作区。例如,还可以将变量保存到mat文件中loadvar.mat
,并将模型回调设置为负载loadvar
.
要了解有关回调的信息,请参见自定义模型行为的回调.若要以编程方式定义用于加载变量的回调,请参见以编程方式存储模型的工作区变量.
将变量保存到文件时,必须保存在MATLAB会话期间对变量所做的更改。要永久存储模型的变量,可以考虑使用模型工作区或数据字典,而不是mat文件或脚本文件。有关永久存储变量的详细信息,请参见确定在哪里存储Simulink模型的变量和对象金宝app.
在上面的例子中,您定义了一个在打开模型时创建变量的模型回调。您可以以编程方式保存变量并设置模型回调。
在命令提示符下,创建变量K
在基本工作区中。
K = 27;
将变量保存到一个名为loadvar.m
.
matlab.io.saveVariablesToScript (“loadvar.m”,“K”)
设置模型回调以加载脚本文件。
set_param (“mymodel”,“PreloadFcn”,“loadvar”)
保存模型。
save_system (“myModel”)
这个函数matlab.io.saveVariablesToScript
将变量保存到脚本文件中。要将变量保存到mat文件,请使用此函数保存
.若要以编程方式设置回调等模型属性,请使用该函数set_param
.
使用变量设置块参数值时,将变量存储在工作区或数据字典中。您可以使用命令提示符、模型资源管理器和模型数据编辑器来创建、移动、复制和编辑变量。您还可以确定一个变量在模型中的使用位置,列出模型使用的所有变量,以及列出模型不使用的所有变量。有关更多信息,请参见创建、编辑和管理工作区变量.
共享多个断点向量或表数据n-D查找表,Prelookup,使用预查找的插值块,考虑将数据存储在其中金宝app仿真软件。LookupTable
而且金宝app仿真软件。断点
对象代替MATLAB变量或金宝app仿真软件。参数
对象。这种技术通过清楚地将数据标识为查找表的一部分,并显式地将断点数据与表数据关联起来,从而提高了模型的可读性。
金宝app仿真软件。LookupTable
对象一个独立的查找表由一组表数据和一个或多个断点向量组成。您不与其他查找表共享表数据或任何断点向量。
共享独立查找表时,将在多个查找表中同时使用所有的表和断点数据n-D查找表块。将此数据存储在金宝app仿真软件。LookupTable
对象:
在工作区或数据字典中创建对象。例如,在命令提示符下输入:
myLUTObj = 金宝appSimulink.LookupTable;
使用对象的属性来存储表和断点数据的值。
使用对象的属性在生成的代码中为结构类型配置唯一的名称。在属性对话框中,在结构类型定义,指定的名字.
在n-D查找表块,设置数据规范来查找表对象
.
的右边数据规范,设置的名字以之名金宝app仿真软件。LookupTable
对象。
有关创建和配置的方法金宝app仿真软件。LookupTable
对象,看到金宝app仿真软件。LookupTable
金宝app仿真软件。LookupTable
而且金宝app仿真软件。断点
对象当你使用Prelookup而且使用预查找的插值块来更精细地控制查找算法,您可以共享断点向量和表数据集。例如,您可以在两个独立的表数据集之间共享断点向量。通过将断点数据与表数据分离,您可以共享查找表的各个部分,而不是共享整个查找表。
存储断点和表数据:
创建一个金宝app仿真软件。LookupTable
对象为每个唯一的表数据集设置。创建一个金宝app仿真软件。断点
对象用于每个惟一的断点向量,包括您不打算共享的断点向量。
使用对象的属性来存储表和断点数据的值。
配置金宝app仿真软件。LookupTable
对象的引用金宝app仿真软件。断点
对象用于断点数据。在金宝app仿真软件。LookupTable
对象,设置规范来参考
.属性的名称金宝app仿真软件。断点
对象。
在使用预查找的插值块,设置规范来查找表对象
.集的名字以一个名字金宝app仿真软件。LookupTable
对象。
在Prelookup块,设置规范来断点对象
.集的名字以一个名字金宝app仿真软件。断点
对象。
示例模型fxpdemo_lookup_shared_param
包含两个Prelookup和两个使用预查找的插值块。配置这些块,使每个组合的aPrelookup和一个使用预查找的插值块表示唯一的查找表。在两个查找表之间共享断点向量。在这种情况下,每个查找表都有唯一的表数据,但是共享断点数据。
打开示例模型。
在Prelookup块对话框,设置规范来断点对象
.集的名字来sharedBkpts
.
点击按钮的值后面的名字参数。选择创建变量.
在创建新数据对话框,设置价值来金宝app仿真软件。断点
并点击创建.
一个金宝app仿真软件。断点
对象出现在基本工作区中。
的属性对话框中sharedBkpts
,指定价值作为一个向量,比如[1 2 3 4 5 6 7 8 9 10]
.点击好吧.
在Prelookup对话框中,单击好吧.
在Prelookup1块对话框,设置规范来断点对象
.集的名字来sharedBkpts
.
在使用预查找的插值块对话框,设置规范来查找表对象
.集的名字来dataForFirstTable
.
点击按钮的值后面的名字参数。选择创建变量.
在创建新数据对话框,设置价值来金宝app仿真软件。LookupTable
并点击创建.
一个金宝app仿真软件。LookupTable
对象出现在基本工作区中。
的属性对话框中dataForFirstTable
,指定价值作为一个向量,例如[10 9 8 7 6 5 4 3 2 1]
.
集规范来参考
.
在下面的表格里规范,设置的名字来sharedBkpts
并点击好吧.
在使用预查找的插值对话框中,单击好吧.
配置使用Prelookup1插值块来使用金宝app仿真软件。LookupTable
对象命名dataForSecondTable
.在对象属性对话框中指定价值作为一个向量,例如[0 0.5 1 1.5 2 2.5 3 3.5 4 4.5]
.配置要引用的对象sharedBkpts
对于断点数据。
该模型现在表示两个唯一的查找表:
结合sharedBkpts
而且dataForFirstTable
.
结合sharedBkpts
而且dataForSecondTable
.
这些查找表通过共享相同的断点数据sharedBkpts
.