我有一些处理(移动轮组)。 Wheelset有质量,它是可变的,它在init.m
文件中声明(例如M=1;
)
现在我希望在这个过程中轮对的质量将每2秒更换一次。如何从Simulink中将质量的新值保存到M变量?
答案 0 :(得分:2)
比将变量存储到工作空间,将其更改为工作空间并将其读回模拟(我甚至不确定是否允许)更好的解决方案是在模拟本身中更改它并使用该变量。如果你能更好地解释你的问题,我可以帮助你。
答案 1 :(得分:2)
您可以使用类似Random Number块的内容来生成这些值吗?你可以给出均值和方差。
如果这对您不起作用,下一个最简单的方法是使用在MATLAB中编写的S-function或MATLAB function块。该函数将在每个时间步调用,您可以运行任何MATLAB代码来计算输出的下一个值。
答案 2 :(得分:2)
对我来说,我已经找到了决定。
我使用变量M
来存储对象质量。从simulink我刚刚在函数调用中调用了M.例如:
但是在MATLAB Function
块中调用函数Rho看起来像:
此方法仅在M为静态时有效。现在我想及时改变M
。所以,首先我决定让M
全局并改变它。我编写了一个函数,创建了一个函数块,它计算新的M
值并将其设置为全局M
变量。但它没有用。您不能同时在Simulink中使用和更改一个全局变量。
所以我决定改变整个方法。由于M
现在不是静态参数,我应该将M
作为信号。现在它看起来像:
这里的块Constant
M
来自工作区(或一些init.m文件),然后Simulink不使用工作空间中的M
变量,而是使用本地信号{{1 }}