我有一个信号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