我们可以使用Parks-McClellan算法轻松设计服从某些频域约束的插值滤波器。但是,目前尚不清楚如何实施时域约束。特别是,我对生成Nyquist过滤器感兴趣。因此,如果我对N进行过采样,则希望滤波器对于非零整数kNk处具有零交叉(这确保了我的内插器的输入采样将出现在输出序列中)。 />
我已经看到Harris1谈论一种设计半带滤波器的技术,即N=2的特殊情况。有一个通用的解决方案吗? (我知道我们可以使用window方法轻松地设计滤波器,但这并不能为我们提供相同的控件。) 208-209


评论

对于N = 2,请参阅我的答案:FIR滤波器设计:Window vs Parks-McClellan和Least-Squares。

不幸的是,有两本文献资料是付费的:F. Mintzer,“关于半频带,第三频带和第N频带FIR滤波器及其设计”,IEEE Trans。声音,语音和信号处理,第一卷ASSP-30,不。 1982年10月,第5页,第734-738页。电路与系统,第一卷CAS-34,否。 》,第10页,1182-1190年,1987年10月。

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

#1 楼

一种设计方法(尽管其中一种方法仅限于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




评论


$ \ begingroup $
我会建议同样的事情。
$ \ endgroup $
– Phonon
11年8月18日在14:13

$ \ begingroup $
+1很棒的图。我将永远+1令人敬畏的图表,因为它们比长图表好得多...经常无聊/错误的解释。
$ \ endgroup $
–特雷弗·博伊德·史密斯
2011年8月21日在16:50

#2 楼

获得期望的过零的一种方法是进行混合设计。

从具有同等权重通带和阻带的Parks-McLellan / Remez半带滤波器开始。由于它是一个半带滤波器,因此在其他采样点将为零。
然后可以通过在频域中进行零填充来按sin(x)/ x插值时域。

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

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

评论


$ \ begingroup $
+1:有趣的想法;我需要考虑一下。我有两个问题。首先,可以肯定地说,我们可以仅通过缩放将等波纹设计约束转换为半带滤波器吗?第二,N的奇数值呢?
$ \ endgroup $
–奥利弗·查尔斯沃思(Oliver Charlesworth)
11年8月16日在21:20

$ \ begingroup $
N的奇数可以通过将偶数FIR减2来处理。如果要每7个采样为零,则设计一个冷杉,每14个采样为零,然后进行抽取以保留零。频谱的上半部分将被混叠,但实际上,集成的旁瓣可以忽略不计。
$ \ endgroup $
–马克·博格丁
2011年8月19日在3:33