我有一個信號s [n]和一個帶通濾波器,可以濾除信號的非常低和很高的頻率分量。我想將信號存儲到一個Matlab數組中並通過過濾器。連接信號上的濾波系統的線性
但是,我不能在MATLAB中存儲s [n],因爲分配的內存不足以包含如此長的信號。我決定將信號分成N段,並將每段通過該帶通濾波器,最後在濾波後組合它們。
我想知道這種方法是否有任何線性問題。如果這是無效的,那麼是否有其他方法可以實現我想要的?謝謝。
我有一個信號s [n]和一個帶通濾波器,可以濾除信號的非常低和很高的頻率分量。我想將信號存儲到一個Matlab數組中並通過過濾器。連接信號上的濾波系統的線性
但是,我不能在MATLAB中存儲s [n],因爲分配的內存不足以包含如此長的信號。我決定將信號分成N段,並將每段通過該帶通濾波器,最後在濾波後組合它們。
我想知道這種方法是否有任何線性問題。如果這是無效的,那麼是否有其他方法可以實現我想要的?謝謝。
如果使用則可以使用convolution FIR濾波器:
x = rand(1000,1)
b = fir1(100, 0.5)
y1 = zeros(1100, 1)
% compute the response using the first 400 points of x
y1(1:500) = conv(x(1:400),b)
% compute the response using the last 600 points of x
y1(401:1100) = y1(401:1100) + conv(x(401:1000),b)
% compute the whole response just to compare
y2 = conv(x,b)
注意CONV的長度(A,B)是長度(a)+ lenght(B) - 1
但是總的迴應將與您的方法持平,您可能會遇到相同的內存問題。
Overlap-add和overlap-save是在進行FFT快速卷積時處理數據的分段窗口的方法,但是也應該與使用(有限)FIR濾波器內核的分段直接線性卷積一起使用。
在進行IIR過濾時,您需要跨段限制保存並恢復內部過濾器狀態。
如果你不這樣做,那麼你通常會在塊邊界處進行短暫點擊。
通常涉及的長度是多少? – 2013-04-05 19:53:42