Matlab中的简单滑动窗口过滤器

我没有nlfilter的包,我没有完全遵循this example.

我有一个非常简单的函数乐趣,我想将它应用于一个移动的数组窗口.数组是Nx1,我想看看长度为k的间隔.所以对于N = 10和k = 3并且fun = @(x)min(x);我会的

A = [13 14 2 14 10 3 5 9 15 8];

filter(A,k,fun) = [2 2 2 3 3 3 5 8];

在这里我只想查看索引1,2,3然后2,3,4然后……然后是8,9,10,所以最后的序列是长度7.我可以用for循环轻松完成这个,但是我不知道如何为Matlab进行矢量化.请帮助.谢谢.

这是一个非常简单快速的方法:

>> min([A(1:(end-2)); A(2:(end-1)); A(3:end)], [], 1)

ans =

     2     2     2     3     3     3     5     8

编辑:因为你想要一个完整的功能……

function running_min = running_min(x, k)

xrep = repmat(x, 1, k);
xrep = reshape([xrep zeros(1, k)], length(x)+1, k);
running_min = min(xrep, [], 2)';
running_min = running_min(1:end-k);
https://stackoverflow.com/questions/7974616/simple-sliding-window-filter-in-matlab

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Matlab中的简单滑动窗口过滤器