持久变量Simulink

时间:2015-05-08 09:26:40

标签: matlab functional-programming signal-processing simulink persistent

我正在尝试使用持久变量来存储嵌入式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

0 个答案:

没有答案