我需要应用一个移动窗口积分滤波器在Matlab中的信号,我发现下面的代码显然这样做,但我不明白它是如何工作的,有人可以解释吗?移动窗口积分滤波器matlab
% Make impulse response
h = ones (1 ,31)/31;
Delay = 15; % Delay in samples
% Apply filter
x6 = conv (x5 ,h);
x6 = x6 (15+[1: N]);
x6 = x6/ max(abs(x6));
我需要应用一个移动窗口积分滤波器在Matlab中的信号,我发现下面的代码显然这样做,但我不明白它是如何工作的,有人可以解释吗?移动窗口积分滤波器matlab
% Make impulse response
h = ones (1 ,31)/31;
Delay = 15; % Delay in samples
% Apply filter
x6 = conv (x5 ,h);
x6 = x6 (15+[1: N]);
x6 = x6/ max(abs(x6));
你试过了吗?这只是一个移动平均过滤器 - 没有做得很好。它只是创建一个矩形窗口(semiwidth = 15),这样新信号的每个值就是原始值的31个邻居的平均值(原始值本身,右边15,左边15)。卷积取平均值,下一行校正“延迟”。最后一行只是标准化,与平均过滤器本身无关。
我不确定如果你真的提到的代码做一个移动窗口整合过滤器,但它做什么:
则:
x6 = conv (x5 ,h); //this applies the filter
x6 = x6 (15+[1: N]); //this applies the delay, it should be x6 (Delay+[1:length(x5)])
x6 = x6/ max(abs(x6)); // this normalizes the response