我需要應用一個移動窗口積分濾波器在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