概述
在Simulink建模过程中,一般通过鼠标点击模块更改该模块的参数值的方法来设定模块参数值。但是,有的时候这种通过鼠标的方法不是很方便,比如以下场景:
- 参数值不是固定值,需要与工作空间中某变量绑定
- 参数值是变化的,或者想通过迭代仿真找到最优的参数值
- 参数值由算法生成
所以,Simulink提供了很多设定模块参数值的方法。
1. 以编程的方式访问参数值
主要是通过使用get_param和set_param这两个函数,用编写M脚本的方法来设定模块参数值。
比如:创建一个名为 myModel 的Simulink模型,其中包含一个名为 My Constant 的 Constant 模块。接下来,使用模块对话框将常量值参数设置为 15。要以编程方式返回参数值,请使用函数 get_param。
paramValue = get_param('myModel/My Constant','Value')
以编程的方式更改此值为25:
set_param('myModel/My Constant','Value','25')
2. 直接指定参数值
在模块的参数对话框中直接指定参数值,也存在多种方法。
方法1:直接填写数值
比如:2.3;[1,2,3,4];2+3i等,最常见的方法
方法2:填写参数变量,如:myVar,通常用于存在于工作区中的Matlab变量。
这样的好处有:
- 更改参数值而无需修改模型文件
- 在模块之间或模型之间共享参数值
- 在扫描或调优参数值时通过特定名称来标识参数
方法3:填写结构体字段,如:myParam.SpeedVect
这样的好处有:
- 避免工作区变量之间发生名称冲突
- 使用层次结构和有意义的名称组织参数值
- 减少模型使用的工作区变量数
方法4:使用矩阵、向量或数组变量的一部分,如:myVectorParam(1)
方法5:使用参数对象,如:myParam
创建参数对象的方法是在Model Explorer中:
或者基于对话框:
- 在对话框中的数值模块参数中,指定所需的数据对象名称。例如,指定名称 myParam
- 点击模块参数值旁边的按钮(竖着的三个点) ,选择创建
- 在创建新数据对话框中,将值指定为 Simulink.Parameter
- 将位置指定为“基础工作区”,然后点击创建。可以使用位置选项选择要包含新数据对象的工作区。如果一个模型链接了数据字典,也可以选择在字典中创建数据对象。
- 在打开的对话框中,配置数据对象属性。在值框中为参数指定一个数值。点击确定。参数对象 myParam 出现在基础工作区中。
- 在模块参数对话框中,点击确定。
这样的好处有:
- 独立于参数值来定义参数特征,如数据类型、复/实性、单位、允许使用的值范围和维度
- 定义带有自定义说明文档的系统常量
- 在生成的代码中创建可调参数
- 将变量的值设置为涉及常量和其他变量的数学表达式
方法6:填写表达式,如下图:
方法7:Matlab函数或自定义函数
假设编写了一个 MATLAB 函数,它可通过接受一个输入数字来计算一个控制算法的最佳 P、I 和 D 参数。
可以通过使用该函数来设置参数值,对 PID Controller 模块进行参数化。
3. 如何选择合适的方法
上面提到的各种方法,如何选择呢?Matlab官方给出了一些建议:
快速运行多个仿真
建议用Simulink.SimulationInput 对象和 sim 函数:使用变量或参数对象设置模块参数值。此方法可帮助你为参数指定有意义的名称,并避免不得不在模型中识别或定位模块。
在测试过程中扫描参数值
建议用Simulink Test模块:使用变量或参数对象设置模块参数值。使用迭代和参数覆盖运行多个测试。请参阅Parameter Overrides (Simulink Test)和Test Iterations (Simulink Test)。
估计并优化参数值
建议用Simulink Design Optimization 模块:使用变量或参数对象设置模块参数值。要估计或优化使用非 double 数据类型的参数,请使用参数对象将值与数据类型相分离。
从模型中生成代码。通过 SIL/PIL 或外部模式仿真对外部程序进行仿真。
建议用Simulink Coder模块:使用参数对象设置模块参数值。这种方式有助于在生成的代码中声明和识别可调参数,还有助于控制参数数据类型。(参考:在生成的代码中创建可调标定参数 )当使用表达式设置模块参数值时,避免使用导致生成的代码失去可调性的运算符和函数。(参考:Tunable Expression Limitations)。
最后
以上就是失眠未来为你收集整理的【Simulink】设定模块参数值的各种方法1. 以编程的方式访问参数值2. 直接指定参数值3. 如何选择合适的方法的全部内容,希望文章能够帮你解决【Simulink】设定模块参数值的各种方法1. 以编程的方式访问参数值2. 直接指定参数值3. 如何选择合适的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复