如何使用Parks-McClellan算法设计Nyquist插值滤波器?


17

我们可以使用Parks-McClellan算法轻松设计服从某些频域约束的插值滤波器。但是,目前尚不清楚如何实施时域约束。特别是,我对生成Nyquist过滤器感兴趣。因此,如果我对进行过采样,则对于非零整数N,我希望滤波器在处具有零交叉(这确保了插值器的输入采样将出现在输出序列中)。kNk

我看过Harris 1谈论一种设计半带滤波器的技术,即特例where N=2。有一个通用的解决方案吗?(我知道我们可以使用window方法轻松设计过滤器,但这并不能提供相同的控件。)

[1] 通信系统的多速率信号处理,第208-209页



不幸的是,有两篇文献引用备受关注:F. Mintzer,“关于半频带,第三频带和第N频带FIR滤波器及其设计”,IEEE Trans。声音,语音和信号处理,第一卷 ASSP-30,不。1982年10月,第5页,第734–738页。T. Saramaki和Y. Neuvo,“一类零零符号间干扰的FIR奈奎斯特(Nth-band)滤波器”,IEEE Trans。电路与系统,第一卷 CAS-34,否。,第10页,1182-1190年,1987
Olli Niemitalo,

这篇文章似乎很有意思:X. Zhang,“ 第M波段FIR线性相位滤波器的设计 ”,2014年第19届国际数字信号处理会议,香港,2014年,第7-11页。doi:10.1109 / ICDSP.2014.6900776
Olli Niemitalo

Answers:


9

一种设计方法(尽管其中一种方法仅限于2的幂)将是从一个半带滤波器开始,彼此插入零(创建频谱副本),然后将其与具有更宽过渡带的第二个半带滤波器卷积。重复该过程,直到达到所需的2的幂。

这是一个示例,该示例创建一个具有Fc = fs / 8且每4个样本过零为零的低通滤波器:

b0=remez(34,[0 .45 .55 1],[1 1 0 0])';
b1=remez(6,[0 .25 .75 1],[1 1 0 0])';
b0up = zeros(1,2*length(b0)-1);
b0up(1:2:end) = b0;
B0up=freqz(b0up);
b2 = conv(b0up,b1);  % length = 34*2+1 + 6 = 75 coefficients

比较示例过滤器


我打算建议同样的事情。
声子

5
+1为真棒。我将永远+1令人敬畏的图表,因为它们比长图表好得多...经常无聊/错误的解释。
特雷弗·博伊德·史密斯

5

获得所需零交叉的一种方法是进行混合设计。

首先使用给定通带和阻带权重相等的Parks-McLellan / Remez半带滤波器。由于它是一个半带滤波器,因此在交替采样处将为零。然后,您可以通过在频域中进行零填充来按sin(x)/ x插值时域。

示例:创建一个fs / 12低通滤波器,每6个采样过零。

% prototype Remez filter 
taps=18; 
b = remez(taps,[0 .4 .6 1],[1 1 0 0])';  
% force halfband condition of zeros at every other sample
b(2:2:end)=0;  b(taps/2+1)=.5; 

% zero pad the time domain to give the Gibbs ripple some deadspace
B=fft(b,4*(taps+1) ); 
% split the frequency domain into two halves, split the Nyquist bin
Blo = [ B(1:length(B)/2) 0.5*B(length(B)/2+1) ]; 
Bhi = [ 0.5*B(length(B)/2+1) B(length(B)/2+2:length(B))  ]; 

% insert padding at pi to increase size 3x
Bpad = [ Blo zeros(1,3*length(B)-length(Blo)-length(Bhi) ) Bhi];  
bint = real( ifft(Bpad) ); % this has zeros every 6 samples

最终的滤波器在阻带/通带纹波方面接近于原型,但不如原型。sin(x)/ x内插确实会引入一些低级振铃。您可能需要稍微过度设计原型滤波器,以在插值滤波器中获得所需的衰减水平。


1
+1:有趣的想法;我需要考虑一下。不过,我有两个问题。首先,可以肯定地说,我们可以简单地通过缩放将等波纹设计约束转换为半带滤波器吗?其次,N的奇数值呢?
奥利弗·查尔斯沃思

N的奇数可以通过将FIR减2来处理。例如,如果您希望每7个采样为零,则设计一个每14个采样为零的fir,然后进行抽取以保留零。频谱的上半部分将被混叠,但实际上,集成的旁瓣可以忽略不计。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.