Matlab 级联信号滤波系统的线性度

Matlab 级联信号滤波系统的线性度,matlab,filter,signal-processing,Matlab,Filter,Signal Processing,我有一个信号s[n]和一个带通滤波器,可以滤除信号中非常低和非常高的频率成分。我想将信号存储到Matlab数组中,并将其通过滤波器 但是,我无法在Matlab中存储s[n],因为分配的内存不足以包含如此长的信号。我决定把信号分成N段,然后把每个段通过带通滤波器,最后在滤波后组装起来 我想知道这种方法是否存在线性问题。如果这是无效的,那么有没有其他方法可以实现我想要的?谢谢。如果您使用FIR滤波器,您可以使用: 请注意,conv(a,b)的长度是长度(a)+长度(b)-1 但是,总响应的长度与您的

我有一个信号s[n]和一个带通滤波器,可以滤除信号中非常低和非常高的频率成分。我想将信号存储到Matlab数组中,并将其通过滤波器

但是,我无法在Matlab中存储s[n],因为分配的内存不足以包含如此长的信号。我决定把信号分成N段,然后把每个段通过带通滤波器,最后在滤波后组装起来


我想知道这种方法是否存在线性问题。如果这是无效的,那么有没有其他方法可以实现我想要的?谢谢。

如果您使用FIR滤波器,您可以使用:

请注意,conv(a,b)的长度是长度(a)+长度(b)-1


但是,总响应的长度与您的方法相同,您可能会遇到相同的内存问题。

重叠添加和重叠保存是在进行FFT快速卷积时处理数据分段窗口的方法,但也应适用于具有(有限)FIR滤波器核的分段直接线性卷积

在执行IIR筛选时,需要跨段边界保存和恢复内部筛选状态


如果不执行上述操作,则通常会在块边界处出现短暂的单击。

通常涉及的长度是多少?
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)