什么样的滤波器会有锯齿频率响应?
窗口设计很容易。从理想的零相位频率响应开始:
它的傅里叶逆变换给出了理想的脉冲响应:
类似于函数,实部在处有一个非法除以零其中极限值应改为使用。对于其他整数,实部为零。虚部也有类似的问题,其极限为 0。取自 Rick 的答案,整数,为零并且是 +1 或 -1。这简化了整数时的理想脉冲响应到:
如果滤波器实现为纯实数和纯虚数滤波器的总和,则纯实数滤波器只需将输入乘以常数即可。脉冲响应的虚部是反对称的,这可以节省成本。
要继续窗口设计,请选择一个窗口函数及其长度(等于滤波器抽头的数量)并将理想脉冲响应乘以它。这给出了滤波器的脉冲响应。窗口函数应该集中在.
对于一般的滤波器设计,最小二乘法通常是一个好的开始。Olli Niemitalo 建议的窗口方法也很有用,但它不太灵活,因为您无法定义“不关心区域”(这对于处理所需响应中的不连续性很重要)。此外,使用最小二乘法,您可以添加一个加权函数,将某些频率区域标记为比其他频率区域更重要,从而使这些区域的近似误差更小。最后,使用最小二乘法,您不需要解析计算逆 DTFT,这在实践中并不总是可行的。
用于最小二乘设计(无加权)的简单 Matlab/Octave 脚本如下所示(注意我假设线性期望相位响应):
N = 101; % 选择一些过滤器长度 w = 2*pi*linspace(-.45,.45,200); 不关心区域的频率网格百分比 d = (.5+w/(2*pi)).*exp(-1i*w*(N-1)/2); % 期望响应(线性相位) A = exp(-1i*w(:)*(0:N-1)); % 超定系统矩阵 A*h=d h = A\d(:); % 最小二乘解 % 绘图设计的频率响应 wp = linspace(-pi,pi,512); H = 频率 (h,1,wp); 绘图(wp/2/pi,abs(H));轴([-.5,.5,0,1])
您所拥有的基本上是采样微分器的幅度响应。
这是一个基本的一阶高通滤波器,斜率为 +6dB/倍频程。
最简单的可能近似是一个零滤波器。
您可以为其添加一个极点以获得更好的低频匹配,或者您可以使用像上面提到的 Olli Niemitalo 之类的窗口 FIR 设计(正确@-attribution 的降价语法是什么?)。
找出时域中锯齿波的傅里叶级数是一个常见的练习。同一系列将是频域中锯齿的时域脉冲响应。因为你想要奇对称,所以都是虚构的(但如果你想要一个真实的结果,那就是共轭对称的)。