Simulink Masks:我可以让变量在内存中持续存在吗?

时间:2014-03-21 16:58:01

标签: matlab simulink

我的simulink模板中有一个参数:refName。在Mask Initialization选项卡中,我首先将其初始化为类型为double的1 x 300向量。我必须这样做,因为这个向量进一步传播到C ++ S函数,其中数组不能(很容易)具有可变大小。

在此之后,在相同的初始化选项卡中,将根据用户输入的另一个参数refType为其分配值。因此,例如,如果refType是'R32',则refName可能是[1 2 3](并非所有300个单元格都被使用),如果refType是R410A,refName可能是[4 5 6],依此类推。

我遇到的问题是在模拟开始之前尝试将此变量发送到工作区(作为变量refNameU。我尝试在CloseFcn,InitFcn LoadFcn块回调中设置refNameU = get_param(gcb,'refName'),但由于某种原因,无论从哪个回调调用,工作空间中的值始终为零。而不是一个大小为300且全零的向量,但只是零。

作为参考,我检查了refName参数的'Evaluate','Enable Parameter'和'Tunable'选项。有人可以向我解释我做错了什么以及如何解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

CloseFcn回调中使用assignin在基础工作区中分配变量。

assignin('base', 'refNameU', refName);