我想在Simulink中的Matlab功能块中创建一个全局数组,每次调用Matlab功能块时,该数组都会增大。在Matlab功能块中创建全局变量的唯一方法是将其链接到“Data Store Memeory”块,但这不允许我创建大小增加的数组。
我目前正在Matlab功能块中使用本地数组,并在退出功能块之前将数组内容写入文件,并在下一次迭代中从中读取。这会减慢执行时间。有没有更好的方法呢?
答案 0 :(得分:0)
您可以在函数中使用持久变量来存储数据。将以下函数放在MATLAB路径中的文件varsizeDataStore.m
中:
function y = varsizeDataStore(varargin)
%#codegen
% Update the bounds to fit your needs
coder.varsize('p',[1,2000], [0,1]);
persistent p;
if isempty(p)
p = zeros(1,0);
end
if nargin > 0
p = [p, varargin{1}];
end
y = p;
如果要增长持久变量,请将参数传递给varsizeDataStore
。要查询该值,请使用无参数调用它。
显然,您可以更改varsizeDataStore
中的逻辑以满足您的需求。其目的是演示使用持久变量和函数作为存储和查询数据的方法而不使用全局变量的想法。