Wis*_*saF 3 matlab filter sliding-window
我没有包nlfilter
,我没有完全遵循这个例子.
我有一个非常简单的功能fun
,我想将它应用到一个移动的数组窗口.数组是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];
Run Code Online (Sandbox Code Playgroud)
在这里我只想查看索引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
Run Code Online (Sandbox Code Playgroud)
编辑:既然你想要一个完整的功能......
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);
Run Code Online (Sandbox Code Playgroud)