2011-12-06 105 views
-1

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

回答

1

你試過了嗎?這只是一個移動平均過濾器 - 沒有做得很好。它只是創建一個矩形窗口(semiwidth = 15),這樣新信號的每個值就是原始值的31個鄰居的平均值(原始值本身,右邊15,左邊15)。卷積取平均值,下一行校正「延遲」。最後一行只是標準化,與平均過濾器本身無關。

1

我不確定如果你真的提到的代碼做一個移動窗口整合過濾器,但它做什麼:

  • 定義的脈衝響應

則:

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