人在仿真软件金宝app

金宝app仿真软件和基于模型的设计

我怎么改变一块参数基于另一个块的输出?

博主,家伙卷轴通过家伙卷轴

我经常遇到的一个问题是:

我怎么能改变块的值参数在仿真运行时?

这种类型的问题的一个很好的例子如下:我怎么模型传递函数的系数随模拟时间在仿真软件?金宝app

每次我收到这个问题,最终解释块模型中参数和信号之间的区别。金宝app这里就是我如何解释:

数据

在MATLAB等许多脚本语言,数据存储在变量。是否数据变化频繁,它仍然是数据存储在一个变量中,程序员可以改变它,每当他或她想要的。

在仿真金宝app软件中,这是不同的。金宝app仿真软件是一个工具用来模拟动态系统的响应。这样做效率,数据分为2类:信号块的参数

信号

在仿真金宝app软件中,信号是一块数据经常变化,可能每个时间步。你可以找到一个详细定义的信号模型金宝app文档:

块的参数

一块参数是一个街区的一个属性。一些块参数,特别是数学参数,可以被定义为可调参数。可以改变一个可调参数的值在仿真运行时块的对话框参数,model explorer或使用set_param命令。

为什么不改变块参数每个时间步?

根据上面的信息,许多人试图实现一个MATLAB-file s函数或者一个事件监听器那叫set_param改变另一个块在每一个时间步的可调参数。这可以工作,然而,有一些重大的缺点。仿真软件(包括事实并不打算使用这种方式!)金宝app每一次你叫set_param在一个模型中,模型评估块金宝app参数,并根据有多少得到评估,这可能是缓慢的。使用MATLAB调用set_param也排除模型被编译成一个实时应用程序。

在我看来,最大的问题是,当你使用set_param改变参数基于块的价值信号,你从仿真软件隐藏数据依赖关系。金宝app

在模型编译、仿真软件决定金宝app顺序的块。这个顺序是基于定义的数据依赖关系的信号。确保您的模型表现得像你希望,你必须告诉模型之间存在依赖关系。金宝app(这是由通过信号传递数据!)

我能做些什么,如果我真的需要改变块的参数每个时间步?

我推荐的方法是使用信号实现你的算法和基本块。例如,而不是使用获得块,用产品布洛克:

从参数信号

或者如果你需要可调的正弦波振幅,频率和相位,构建与基本块:

正弦波与可变振幅、频率和相位

我同意这些例子是相对简单的。但即使对于更复杂的例子通常是不太困难的让你定制子系统。

最后,如果有一块参数模型库,您的应用程序需要一个信号,我建议金宝app联系技术支持金宝app关于它。我们的工程师将会指引你正确的方向并提交改进请求我们的开发团队。

一个块的参数也可以是一个输入信号直接查找表(一天)。在每一个时间步,你可以改变表数据启用“让表输入”选项。

现在轮到你了

你要哪块参数作为一个信号?留下一个这里的评论与你的建议

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。