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