如何在Simulink中及时更改变量?

时间:2011-04-20 23:48:59

标签: time simulink

我有一些处理(移动轮组)。 Wheelset有质量,它是可变的,它在init.m文件中声明(例如M=1;

现在我希望在这个过程中轮对的质量将每2秒更换一次。如何从Simulink中将质量的新值保存到M变量?

3 个答案:

答案 0 :(得分:2)

比将变量存储到工作空间,将其更改为工作空间并将其读回模拟(我甚至不确定是否允许)更好的解决方案是在模拟本身中更改它并使用该变量。如果你能更好地解释你的问题,我可以帮助你。

答案 1 :(得分:2)

您可以使用类似Random Number块的内容来生成这些值吗?你可以给出均值和方差。

如果这对您不起作用,下一个最简单的方法是使用在MATLAB中编写的S-functionMATLAB function块。该函数将在每个时间步调用,您可以运行任何MATLAB代码来计算输出的下一个值。

答案 2 :(得分:2)

对我来说,我已经找到了决定。

我使用变量M来存储对象质量。从simulink我刚刚在函数调用中调用了M.例如:

enter image description here

但是在MATLAB Function块中调用函数Rho看起来像: enter image description here

此方法仅在M为静态时有效。现在我想及时改变M。所以,首先我决定让M全局并改变它。我编写了一个函数,创建了一个函数块,它计算新的M值并将其设置为全局M变量。但它没有用。您不能同时在Simulink中使用和更改一个全局变量。

所以我决定改变整个方法。由于M现在不是静态参数,我应该将M作为信号。现在它看起来像:

enter image description here

这里的块Constant M来自工作区(或一些init.m文件),然后Simulink不使用工作空间中的M变量,而是使用本地信号{{1 }}