滑动窗口算法:可以将双层嵌套的循环问题,转换为单层遍历的循环问题。使用两个指针一左一右构成一个窗口,就可以将二维循环的问题转化成一维循环一次遍历,相当于通过旧有的计算结果对搜索空间进行剪枝,使时间复杂度从O(n²)降低至O(n)。
上图来源 https://blog.csdn.net/king0406/article/details/103129786
本文搭建simulink模型如下
目的:实现 长度为1s(即十个数据)的滑动窗口,其在每个仿真步长内前进0.1s,并将十个数据实时输出
MATLAB Function 内的代码:
function y = fcn(u)
%#codegen
y=zeros(10,1); %
persistent data %用于保存实时输入的数据
if isempty(data)
data=zeros(3000000,1);%根据仿真时长取值
end
persistent n %用于对输入的数据个数计数
if isempty(n)
n=1;
else
n=n+1;
end
data(n,1)=u;
if n>=10
y=data(n-9:n,1);
end
仿真结果: