我正在尝试使用持久变量来存储嵌入式Matlab函数中的先前样本。在每一步,我得到一个32位输入,我将其存储到持久变量中。作为嵌入式Matlab函数的输出,一旦收集了模拟时间的所有样本,我就会尝试将其发送到调制器。问题如下:使用随机整数生成器,假设模拟时间为0.01s,该块生成626个整数,然后在嵌入式Matlab函数中扩展到626x32位。现在这个626x32是我当前使用持久变量的嵌入式matlab函数的输入。我期望的输出是(626 * 32)x1,但我得到的输出是626x(626 * 32),即,我想避免重复的行。有人可以帮我弄这个吗。这是我的代码
function y = fcn(u)
%#codegen
persistent temp_store;
persistent n;
Tsim = 0.01;
sample_time = 1.6e-5;
no_of_chips = 32;
no_of_samples = round(Tsim/sample_time);
if isempty(n) %%initialize persistent variable
n = 1;
end
if isempty(temp_store) %%initialize persistent variable
temp_store = zeros(no_of_samples * no_of_chips,1);
end
%%storing samples into persistent variable
while(n <= no_of_samples)
temp_store((n * no_of_chips)-(no_of_chips - 1): n * no_of_chips) = u;
n = n + 1;
end
%% After collection of all samples, output the persistent variable
if(n == no_of_samples + 1)
y = uint8(temp_store);
else
y = uint8(zeros(no_of_samples * no_of_chips,1));
end
end