将采样值放入矩阵 - simulink

时间:2015-05-29 19:08:41

标签: matlab simulink

如何在simulink中将值放入矩阵?例如,如果我每隔0.5秒对一个正弦波进行采样,并将该值放入大小为N的固定大小矩阵中。矩阵填满后,它将覆盖最旧的值。

1 个答案:

答案 0 :(得分:0)

假设您正在讨论使用矩阵就好像它是缓冲区一样,那么如果您有DSP Blockset,则可以使用Buffer块。否则,使用MATLAB功能块非常简单(参见下面的代码)。如果矩阵是由模型的另一部分构造的,那么可以将其作为第二个输入传递给MATLAB功能块并适当修改(新元素)插入代码。

function y = custom_buffer(u)
%#codegen

persistent buffer next_index

buf_size = 1000;

% Define initial values
if isempty(buffer)
    buffer = zeros(buf_size,1);
    next_index = 1;
end

% Populate the buffer
buffer(next_index) = u;

% Increment the location to write to at the next time
if next_index < buf_size
    next_index = next_index + 1;
else
    next_index = 1;
end

% Populate the output
y = buffer;