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