Author:CofCai
personal page
CSDN page
Email✉️:[email protected]
QQ:1664866311
说明:本文并非全部原创,是在网上学习各位前辈的文章后写的学习总结,文中有些图片和代码使用了网上的文章,若侵比删。所参考文章的链接已在文中给出!
从时域我们很难看出信号包含那些频率成分,也很难去掉信号中某些特定的成分。如果能将信号表达成不同频率成分之和,那么不就很容易看出该信号包含那些频率成分了吗。此时,就需要傅里叶级数(周期信号)、傅里叶变换(非周期信号)等。对于离散信号,需要DTFT(离散时间傅里叶变换)、DFS(离散傅里叶级数、离散周期信号)、DFT(离散傅里叶变换、离散非周期信号)等。
连续(模拟)信号
FS
将周期连续信号变换到频域。
FT
将非周期连续信号变换到频域。
LT
变换到复平面,及s平面。
离散(数字)信号
DTFT
将数字信号变换到频域,此时频域是连续的。
DFS
将周期数字信号变换到频域。
DFT
将数字信号变换到频域,此时频域也是离散的。
ZT
变换到z平面。
滤波器就是滤掉干扰信息(噪声),保留有用信息。
下面分别是按滤掉噪声频率的几类滤波器的幅频曲线图:
设计常规滤波器的时候,我们一般采用另外一种分类,FIR(Finite Impulse Response)和IIR(Infinite Impulse Response)filter,即有限脉冲响应滤波器和无限脉冲响应滤波器。
理想脉冲信号,其傅里叶变换恒为1,也就时包含了所有频率分量,是一个理想的测试信号,能够激发出所有单位频率分量的响应,因此理想脉冲信号的响应,就代表了系统的特性。
滤波器也可以看成一个系统,如果用一个理想脉冲信号激励,就会有输出,我们把输出个数有限的称为有限脉冲响应滤波器(FIR);输出无限多的称为无限脉冲响应滤波器(IIR)。
滤波器分为模拟滤波器和数字滤波器。模拟滤波器的理论和设计方法已经非常成熟,可以通过模拟滤波器间接设计数字滤波器。
就如第一幅图一样,我们可以通过其幅频曲线得到其截止频率、通带情况。那么怎么获得幅频曲线图呢?那就是通过系统函数。
H ( j ω ) = ∣ H ( j ω ) ∣ e θ ( ω ) H(j\omega)=\left|H(j\omega)\right|e^{\theta(\omega)} H(jω)=∣H(jω)∣eθ(ω)
∣ H ( j ω ) ∣ |H(j\omega)| ∣H(jω)∣就是其幅频特性曲线, θ ( ω ) \theta(\omega) θ(ω)就是其相频特性曲线。
如何得到系统函数:
由系统的特性分析得到微分方程或差分方程,再拉普拉斯变换或z变换。
LT是对连续FT的拓展,即从频率到复频域, j ω ⟹ s = δ + j ω j{\omega}{\Longrightarrow}s={\delta}+j{\omega} jω⟹s=δ+jω。
ZT是对离散FT的拓展,也可以看是对LT的再映射,即 z = e s T s z=e^{sT_s} z=esTs。
如何从DTFT到ZT,请看。简单说一下:
D F T : X ( j ω ) = ∑ n = − ∞ + ∞ x ( n ) e j ω n T s DFT:X(j\omega)=\sum_{n=-\infin}^{+\infin}x(n)e^{j{\omega}nT_s} DFT:X(jω)=n=−∞∑+∞x(n)ejωnTs
同FT到LT一样,为了满足绝对可和条件,乘上一个衰减因子 e δ t = e δ n T s e^{{\delta}t}=e^{{\delta}nT_s} eδt=eδnTs(离散化)。
X ( j ω ) = ∑ n = − ∞ + ∞ x ( n ) e j ω n T s e δ n T s = ∑ n = − ∞ + ∞ x ( n ) e − ( δ + j ω ) n T s X(j\omega)=\sum_{n=-\infin}^{+\infin}x(n)e^{j{\omega}nT_s}e^{{\delta}nT_s}\\ =\sum_{n=-\infin}^{+\infin}x(n)e^{-({\delta}+j{\omega})nT_s} X(jω)=n=−∞∑+∞x(n)ejωnTseδnTs=n=−∞∑+∞x(n)e−(δ+jω)nTs
令 z = e ( δ + j ω ) T s z=e^{({\delta}+j{\omega})T_s} z=e(δ+jω)Ts,得到DFT的式子为:
X ( j ω ) = ∑ n = − ∞ + ∞ x ( n ) z − n X(j{\omega})=\sum_{n=-\infin}^{+\infin}x(n)z^{-n} X(jω)=n=−∞∑+∞x(n)z−n
上式就是Z变换了。
如何理解上面的规律?
因此,分析幅频响应时,频率轴在单位圆上,这也是为什么上面提到的规律都在说单位圆上的点怎么怎么样。
H ( z ) = A ∏ r = 1 M ( 1 − c r z − 1 ) ∏ r = 1 N ( 1 − d r z − 1 ) ∣ H ( e j ω ) ∣ = ∣ A ∣ ∏ r = 1 M ∣ z r ∣ ∏ r = 1 N ∣ P r ∣ ϕ ( ω ) = ω ( N − M ) + ∑ r = 1 N α r − ∑ r = 1 M β r H(z)=A\frac{\prod_{r=1}^M(1-c_rz^{-1})}{\prod_{r=1}^{N}(1-d_rz^{-1})} \\ |H(e^{j\omega})|=|A|\frac{\prod_{r=1}^M|z_r|}{\prod_{r=1}^N{|P_r|}} \\ \phi(\omega)=\omega(N-M)+\sum_{r=1}^{N}\alpha_r-\sum_{r=1}^{M}\beta_r H(z)=A∏r=1N(1−drz−1)∏r=1M(1−crz−1)∣H(ejω)∣=∣A∣∏r=1N∣Pr∣∏r=1M∣zr∣ϕ(ω)=ω(N−M)+r=1∑Nαr−r=1∑Mβr
即幅频响应等于所有的零点到 ω \omega ω的模长的乘积除以所有的极点到 ω \omega ω的模长的乘积;相频响应等于所有的零点与 ω \omega ω形成的夹角之和减去所有的极点与 ω \omega ω形成的夹角之和。
y ( n ) = 1 N ∑ k = 0 N x ( n − k ) = 1 N [ x ( n ) + . . . + x ( n − N + 1 ) ] y(n)=\frac{1}{N}\sum_{k=0}^Nx(n-k)\\=\frac{1}{N}\left[x(n)+...+x(n-N+1)\right] y(n)=N1k=0∑Nx(n−k)=N1[x(n)+...+x(n−N+1)]
x ( n ) x(n) x(n)是当前测量值, x ( n − N + 1 ) x(n-N+1) x(n−N+1)是前第N-1次测量值。
对均值滤波的时域表达式进行Z变换得:
H ( z ) = 1 N ∑ k = 0 N z − N = 1 N 1 − z − N 1 − z − 1 H(z)=\frac{1}{N}\sum_{k=0}^{N}z^{-N}\\=\frac{1}{N}\frac{1-z^{-N}}{1-z^{-1}} H(z)=N1k=0∑Nz−N=N11−z−11−z−N
令 z = e j ω z=e^{j\omega} z=ejω得:
H ( e j ω ) = 1 N 1 − e − j ω N 1 − e − j ω = 1 N e − j ω ( N − 1 ) 2 sin ( ω N ) / 2 sin ( ω ) / 2 H(e^{j\omega})=\frac{1}{N}\frac{1-e^{-j{\omega}N}}{1-e^{-j{\omega}}}\\=\frac{1}{N}e^{-j\frac{\omega(N-1)}{2}}\frac{\sin({\omega}N)/2}{\sin(\omega)/2} H(ejω)=N11−e−jω1−e−jωN=N1e−j2ω(N−1)sin(ω)/2sin(ωN)/2
H ( z ) = 1 N 1 − z − N 1 − z − 1 = 1 N z N − 1 z N − z N − 1 H(z)=\frac{1}{N}\frac{1-z^{-N}}{1-z^{-1}}\\=\frac{1}{N}\frac{z^{N}-1}{z^{N}-z^{N-1}} H(z)=N11−z−11−z−N=N1zN−zN−1zN−1
matlab代码:
NN = [3 6 12];
for i = 1:3
N = NN(i);
B = ones(1, N);
B = [B -1];
A = zeros(1, N-1);
A = [1 -1 A];
subplot(3, 1, i);
zplane(B, A);
xlabel(['N=', num2str(N)]);
end
python代码分析均值滤波频率响应,采样率为200Hz,阶数为7。
from scipy.optimize import newton
from scipy.signal import freqz, dimpulse, dstep
from math import sin, cos, sqrt, pi
import numpy as np
import matplotlib.pyplot as plt
import sys
#函数用于计算移动平均滤波器的截止频率
def get_filter_cutoff(N, **kwargs):
func = lambda w: sin(N*w/2) - N/sqrt(2) * sin(w/2)
deriv = lambda w: cos(N*w/2) * N/2 - N/sqrt(2) * cos(w/2) / 2
omega_0 = pi/N # Starting condition: halfway the first period of sin
return newton(func, omega_0, deriv, **kwargs)
#设置采样率
sample_rate = 200 #Hz
N = 7
# 计算截止频率
w_c = get_filter_cutoff(N)
cutoff_freq = w_c * sample_rate / (2 * pi)
# 滤波器参数
b = np.ones(N)
a = np.array([N] + [0]*(N-1))
#频率响应
w, h = freqz(b, a, worN=4096)
#转为频率
w *= sample_rate / (2 * pi)
#绘制波特图
plt.subplot(2, 1, 1)
plt.suptitle("Bode")
#转换为分贝
plt.plot(w, 20 * np.log10(abs(h)))
plt.ylabel('Magnitude [dB]')
plt.xlim(0, sample_rate / 2)
plt.ylim(-60, 10)
plt.axvline(cutoff_freq, color='red')
plt.axhline(-3.01, linewidth=0.8, color='black', linestyle=':')
# 相频响应
plt.subplot(2, 1, 2)
plt.plot(w, 180 * np.angle(h) / pi)
plt.xlabel('Frequency [Hz]')
plt.ylabel('Phase [°]')
plt.xlim(0, sample_rate / 2)
plt.ylim(-180, 90)
plt.yticks([-180, -135, -90, -45, 0, 45, 90])
plt.axvline(cutoff_freq, color='red')
plt.show()
改变滤波器阶数,观察幅频响应(N=3,7,18):
可以看出,均值滤波器:
稳定和线性相位特性是FIR滤波器最突出的优点,但阶数较高;IIR滤波器相位非线性,但阶数低。
从上面可以看出,IIR和FIR滤波器各有所长,在实际运用当中应全面考虑再加以选择。比如,对于相位要求不高的场合,如语音通讯等可以选用IIR滤波器;对于图象信号处理等相位要求高的场合应采用FIR滤波器。
如何快速设计一个FIR滤波器(一)
如何快速设计一个FIR滤波器(二)
FIR滤波器的设计方法和IIR滤波器的设计方法有很大差别。FIR滤波器的设计任务是选择有限长度的 h ( n ) h(n) h(n),使频率响应函数 H ( e j ω ) H(e^{j\omega}) H(ejω)满足技术指标要求。
下面介绍几种设计FIR滤波器的方法:窗函数法、频率采样法、响应最优法(切比雪夫等波纹逼近法、最小二乘法)。
窗函数的作用
加窗原理和频谱泄露 深入理解
FFT变换只能对有限长度的时域数据进行变换,因此,需要对时域信号进行信号截断。即使是周期信号,如果截断的时间长度不是周期的整数倍(周期截断),那么,截取后的信号将会存在泄漏。为了将这个泄漏误差减少到最小程度(注意我说是的减少,而不是消除),我们需要使用加权函数,也叫窗函数。加窗主要是为了使时域信号似乎更好地满足FFT处理的周期性要求,减少泄漏。
如下图所示:
为了减少泄漏,给信号施加一个窗函数(如图中上部红色曲线所示),原始截断后的信号与这个窗函数相乘之后得到的信号为上面右侧的信号。可以看出,此时,信号的起始时刻和结束时刻幅值都为0,也就是说在这个时间长度内,信号为周期信号,但是只有一个周期。对这个信号做FFT分析,得到的频谱如下部右侧所示。相比较之前未加窗的频谱,可以看出,泄漏已明显改善,但并没有完全消除。因此,窗函数只能减少泄漏,不能消除泄漏。
基于窗函数法设计FIR滤波器,其基本步骤如下:
MATLAB中基于窗函数法设计滤波器:
% h = fir1(n, Wn, ftype, window);
% n表示滤波器阶数;Wn表示归一化后的滤波器截止频率,可表示成[fl fh]的形式;ftype表示滤波器类型;window表示窗函数类型。
% 这是一个24阶的带通滤波器,归一化截止频率为[0.2 0.4]
h = fir1(24, [0.2 0.4]);
freqz(h, 1, 512);
设希望逼近的滤波器的频响函数用 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω)表示,对 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω)在 ω = 0 \omega=0 ω=0到 2 π 2\pi 2π之间等间隔采样N点,得到 H d ( k ) H_d(k) Hd(k):
H d ( k ) = H d ( e j ω ) ∣ ω = 2 π N k k = 0 , 1 , . . . , N − 1 H_d(k)=H_d(e^{j\omega})|_{\omega=\frac{2\pi}{N}k}{\quad}k=0,1,...,N-1 Hd(k)=Hd(ejω)∣ω=N2πkk=0,1,...,N−1
再对 H d ( k ) H_d(k) Hd(k)进行N点IDFT,得到 h ( n ) h(n) h(n):
h ( n ) = I D F T [ H d ( k ) ] = 1 N ∑ k = 0 N − 1 H d ( k ) W N − k n n = 0 , 1 , 2 , . . . , N − 1 h(n)=IDFT[H_d(k)]=\frac{1}{N}\sum_{k=0}^{N-1}H_d(k)W_N^{-kn}{\quad}n=0,1,2,...,N-1 h(n)=IDFT[Hd(k)]=N1k=0∑N−1Hd(k)WN−knn=0,1,2,...,N−1
将 h ( n ) h(n) h(n)作为所设计的FIR滤波器的单位冲激响应,其系统函数 H ( z ) H(z) H(z)为:
H ( z ) = ∑ n = 0 N − 1 h ( n ) z − n H(z)=\sum_{n=0}^{N-1}h(n)z^{-n} H(z)=n=0∑N−1h(n)z−n
或者根据频率域采样理论,利用频率域采样值 H d ( k ) H_d(k) Hd(k)恢复原信号的Z变换,得到 H ( z ) H(z) H(z)的内插表示形式为:
H ( z ) = 1 − z − 1 N ∑ k = 0 N − 1 H d ( k ) 1 − W N − k z − 1 H(z)=\frac{1-z^{-1}}{N}\sum_{k=0}^{N-1}\frac{H_d(k)}{1-W_N^{-k}z^{-1}} H(z)=N1−z−1k=0∑N−11−WN−kz−1Hd(k)
上述两种方法如下:
MATLAB中使用频率采样法设计FIR滤波器:
% h = fir2(n, f, m);
% n表示阶数;f表示分立点频率矢量;m表示分立点对应的幅值响应矢量
f = [0 0.7 0.7 1];
m = [10 1 0 0];
h = fir2(24, f, m);
freqz(h, 1);
主要思路就是找到一组脉冲响应,让它的频域响应 H ( e j ω ) H(e^{j\omega}) H(ejω)与期望的滤波器的频域响应 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω)尽可能一致。主要通过两种方法来实现,一个是最小二乘法、另一个是(切比雪夫)等波纹逼近法。
与频率采样法近似,期望的频率响应用一组分立的点 ( f i , A ( f i ) ) i = 1 , 2 , . . . , N (f_i,\ A(f_i)){\quad}i=1,2,...,N (fi, A(fi))i=1,2,...,N来表示,优化目标如下:
∑ i = 1 N W i [ H ( f i ) − H d ( f i ) ] 2 → m i n \sum_{i=1}^{N}W_i\left[H(f_i)-H_d(f_i)\right]^2{\rightarrow}min i=1∑NWi[H(fi)−Hd(fi)]2→min
其中 W i W_i Wi为不同频率下的权重。
MATLAB指令为:
% h = firls(n, f, m);
% n为滤波器阶数,f表示分立点的矢量,m表示分立点对应的幅值响应矢量。
% 下面以低通滤波器为例:
f = [0 0.3 0.3 1];
m = [10 1 0 0];
h = firls(24, f, m);
freqz(h, 1)
书上的:
用 H d ( ω ) H_d(\omega) Hd(ω)表示希望逼近的幅度特性函数,要求设计线性相位FIR数字滤波器时, H d ( ω ) H_d(\omega) Hd(ω)必须满足线性相位约束条件。用 H g ( ω ) H_g(\omega) Hg(ω)表示实际设计的滤波器幅度特性函数,定义加权误差函数 E ( ω ) E(\omega) E(ω)为:
E ( ω ) = W ( ω ) [ H d ( ω ) − H g ( ω ) ] m a x E ( ω ) → m i n E(\omega)=W(\omega)[H_d(\omega)-H_g(\omega)]\\ max\ E(\omega){\rightarrow}min E(ω)=W(ω)[Hd(ω)−Hg(ω)]max E(ω)→min
另外:
与最小二乘法不同(方差最小),切比雪夫法采用的方案是最大误差最小,即:
max ∣ W i ( H ( f i ) − H d ( f i ) ) ∣ → min \max{\left|W_i(H(f_i)-H_d(f_i))\right|}{\rightarrow}\min max∣Wi(H(fi)−Hd(fi))∣→min
MATLAB指令:
h = firpm(n, f, m);
% 对于切比雪夫法,频率响应不能直接从1降到0
% f = [0 0.1 0.1 1]这样是不行的
f = [0 0.1 0.101 1];
m = [100 1 0 0];
h = firpm(24, f, m);
freqz(h, 1)
对于响应最优法更像是拟合,下图是窗函数法和频率采样法的流程图:
如何快速设计一个IIR滤波器
利用模拟滤波器成熟的理论及其设计方法来设计IIR数字低通数字滤波器是常用的方法。设计过程是:
所以可见,设计的关键就是找到某种转换关系,将s平面上的 H a ( s ) H_a(s) Ha(s)转换到z平面上的 H ( z ) H(z) H(z)。这种转换关系需要满足一定的条件:
基于以上要求,目前常用的转换方法有脉冲响应不变法、双线性变换法。脉冲响应不变法是线性变换,而双线性变换法是非线性变换。
注:我们一般是设计相应的低通滤波器,然后根据频率变换公式,得到相应的高通、带通、带阻滤波器。
模拟滤波器的技术指标给定后,需要设计一个系统函数 H a ( s ) H_a(s) Ha(s),希望其幅度平方函数满足给定的指标。一般滤波器的单位冲激响应为实函数,因此:
∣ H a ( j Ω ) ∣ 2 = H a ( s ) H a ( − s ) ∣ s = j Ω = H a ( j Ω ) H a ∗ ( j Ω ) |H_a(j\Omega)|^2=H_a(s)H_a(-s)|_{s=j\Omega}=H_a(j\Omega)H_a^*(j\Omega) ∣Ha(jΩ)∣2=Ha(s)Ha(−s)∣s=jΩ=Ha(jΩ)Ha∗(jΩ)
如果能由 α p \alpha_p αp, Ω p \Omega_p Ωp, α s \alpha_s αs, Ω s \Omega_s Ωs求出 ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 ∣Ha(jΩ)∣2,那么就可以求出 H a ( s ) H a ( − s ) H_a(s)H_a(-s) Ha(s)Ha(−s),由此可以求出需要的 H a ( s ) H_a(s) Ha(s),其极点必须落在s平面的左半平面;相应地, H a ( − s ) H_a(-s) Ha(−s)的极点就应落在s平面的右半平面,这就是模拟低通滤波器的逼近方法。
幅度平方函数 ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 ∣Ha(jΩ)∣2为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ( Ω Ω c ) 2 N = 1 1 + ( s j Ω c ) 2 N ∣ s = j Ω |H_a(j\Omega)|^2=\frac{1}{1+(\frac{\Omega}{\Omega_c})^{2N}}\\ =\frac{1}{1+(\frac{s}{j\Omega_c})^{2N}}|_{s=j\Omega} ∣Ha(jΩ)∣2=1+(ΩcΩ)2N1=1+(jΩcs)2N1∣s=jΩ
N为滤波器阶数,该滤波器是一个低通滤波器,原因如下:
该系统函数有2N个极点,极点为:
s k = ( − 1 ) 1 2 N ( j Ω c ) = Ω c e j π ( 1 2 + 2 k + 1 2 N ) , k = 0 , 1 , . . . , 2 N − 1 s_k=(-1)^{\frac{1}{2N}}(j\Omega_c)={\Omega_c}e^{j{\pi}(\frac{1}{2}+\frac{2k+1}{2N})},k=0,1,...,2N-1 sk=(−1)2N1(jΩc)=Ωcejπ(21+2N2k+1),k=0,1,...,2N−1
这2N个极点等间隔分布在半径为 Ω c \Omega_c Ωc的圆上(此圆称为巴特沃斯圆),间隔是 π / N \pi/N π/Nrad。
N = 3;
k = 0:(2*N-1);
k = k';
Z = [];
P = exp(1i*pi*(0.5 + (2*k+1) ./ (2*N)));
% 零极点
zplane(Z, P);
title('零极点分布图');
取左半平面的N个极点构成系统函数 H a ( s ) H_a(s) Ha(s),并用3dB截止频率 Ω c \Omega_c Ωc归一化得:
G a ( s Ω c ) = 1 ∏ k = 0 N − 1 ( s Ω c − s k Ω c ) = 1 ∏ k = 0 N − 1 ( p − p k ) ( 1 ) G_a(\frac{s}{\Omega_c})=\frac{1}{\prod_{k=0}^{N-1}(\frac{s}{\Omega_c}-\frac{s_k}{\Omega_c})}\\ ={\color{blue}\frac{1}{\prod_{k=0}^{N-1}(p-p_k)}}{\quad}(1) Ga(Ωcs)=∏k=0N−1(Ωcs−Ωcsk)1=∏k=0N−1(p−pk)1(1)
式中
p k = s k / Ω c = e j π ( 1 2 + 2 K + 1 2 N ) , k = 0 , 1 , . . . , N − 1 ( 2 ) p_k=s_k/\Omega_c=e^{j{\pi}(\frac{1}{2}+\frac{2K+1}{2N})},k=0,1,...,N-1{\qquad}(2) pk=sk/Ωc=ejπ(21+2N2K+1),k=0,1,...,N−1(2)
为归一化极点。
这样,只要根据技术指标求出阶数N,按照式(2)求出N个极点,再按照式(1)得到归一化的系统函数 G a ( s ) G_a(s) Ga(s)。如果知道截止频率 Ω c \Omega_c Ωc,即可知道系统函数 H a ( s ) H_a(s) Ha(s)。
注:设计出满足要求的低通滤波器后,通过频率变换公式即可得到高通滤波器、带通滤波器、带阻滤波器等。
阶数N的大小主要影响通带幅频特性的平坦程度和过渡带、阻带的幅度下降速度,它由技术指标 Ω p , α p , Ω s , α s \Omega_p,\ \alpha_p,\ \Omega_s,\ \alpha_s Ωp, αp, Ωs, αs确定,下面直接给出N的选取规则:
λ s p = Ω s Ω p k s p = 1 0 α s / 10 − 1 1 0 α p / 10 − 1 N = lg k s p lg λ s p ( 向 上 取 整 ) \lambda_{sp} = \frac{\Omega_s}{\Omega_p} \\ k_{sp} = \sqrt{\frac{10^{\alpha_s/10}-1}{10^{\alpha_p/10}-1}} \\ N = \frac{\lg{k_{sp}}}{\lg{\lambda_{sp}}}{\quad}(向上取整) λsp=ΩpΩsksp=10αp/10−110αs/10−1N=lgλsplgksp(向上取整)
如果技术指标没有给出3 dB截止频率,可以通过下式求得:
Ω c = Ω p ( 1 0 0.1 α p − 1 ) − 1 2 N Ω c = Ω s ( 1 0 0.1 α s − 1 ) − 1 2 N \Omega_c = \Omega_p(10^{0.1\alpha_p}-1)^{-\frac{1}{2N}} \\ \Omega_c = \Omega_s(10^{0.1\alpha_s}-1)^{-\frac{1}{2N}} \\ Ωc=Ωp(100.1αp−1)−2N1Ωc=Ωs(100.1αs−1)−2N1
已知通带截止频率 f p = 5 k H z f_p=5kHz fp=5kHz,通带最大衰减 α p = 2 d B \alpha_p=2dB αp=2dB,阻带截止频率 f s = 12 k H z f_s=12kHz fs=12kHz,阻带最小衰减 α s = 30 d B \alpha_s=30dB αs=30dB,按照以上技术指标设计巴特沃斯低通滤波器。
确定阶数N
λ s p = Ω s Ω p = 2 π f s 2 π f p = 2.4 k s p = 1 0 α s / 10 − 1 1 0 α p / 10 − 1 = 41.3223 N = lg k s p lg λ s p = 4.25 = 5 ( 向 上 取 整 ) \lambda_{sp} = \frac{\Omega_s}{\Omega_p}=\frac{2{\pi}f_s}{2{\pi}f_p} = 2.4 \\ k_{sp} = \sqrt{\frac{10^{\alpha_s/10}-1}{10^{\alpha_p/10}-1}} = 41.3223 \\ N = \frac{\lg{k_{sp}}}{\lg{\lambda_{sp}}}=4.25=5{\quad}(向上取整) λsp=ΩpΩs=2πfp2πfs=2.4ksp=10αp/10−110αs/10−1=41.3223N=lgλsplgksp=4.25=5(向上取整)
计算归一化极点(可查表)
p k = s k / Ω c = e j π ( 1 2 + 2 K + 1 2 N ) , k = 0 , 1 , . . . , N − 1 p 0 = e j 3 5 π , p 1 = e j 4 5 π , p 2 = e j π , p 3 = e j 6 5 π , p 4 = e j 7 5 π p_k=s_k/\Omega_c=e^{j{\pi}(\frac{1}{2}+\frac{2K+1}{2N})},k=0,1,...,N-1{\qquad} \\ p_0 = e^{j\frac{3}{5}\pi},{\quad} p_1 = e^{j\frac{4}{5}\pi},{\quad}p_2 = e^{j\pi},{\quad}p_3 = e^{j\frac{6}{5}\pi},{\quad}p_4 = e^{j\frac{7}{5}\pi} pk=sk/Ωc=ejπ(21+2N2K+1),k=0,1,...,N−1p0=ej53π,p1=ej54π,p2=ejπ,p3=ej56π,p4=ej57π
确定归一化低通原型系统函数 G a ( p ) G_a(p) Ga(p),可以查表找到其分母多项式的系数。
G a ( p ) = 1 ∏ k = 0 4 ( p − p k ) G a ( p ) = 1 p 5 + b 4 p 4 + b 3 p 3 + b 2 p 2 + b 1 p 1 + b 0 b 0 = 1 , b 1 = 3.2361 , b 2 = 5.2361 , b 3 = 5.2361 , b 4 = 3.2361 G_a(p) = \frac{1}{\prod_{k=0}^{4}(p-p_k)} \\ G_a(p) = \frac{1}{p^5 + b_4p^4 + b_3p^3 + b_2p^2 + b_1p^1 + b_0} \\ b_0 = 1,\ b1 = 3.2361,\ b2 = 5.2361,\ b3 = 5.2361,\ b4 = 3.2361 Ga(p)=∏k=04(p−pk)1Ga(p)=p5+b4p4+b3p3+b2p2+b1p1+b01b0=1, b1=3.2361, b2=5.2361, b3=5.2361, b4=3.2361
为去归一化,先求截止频率 Ω c \Omega_c Ωc
Ω c = Ω p ( 1 0 0.1 α p − 1 ) 1 − 2 N = 2 π × 5.2755 k r a d / s Ω s ′ = Ω c ( 1 0 0.1 α s − 1 ) 1 2 N = 2 π × 10.525 k r a d / s \Omega_c = \Omega_p(10^{0.1\alpha_p}-1)^{\frac{1}{-2N}} = 2\pi\times5.2755krad/s \\ \Omega_s' = \Omega_c(10^{0.1\alpha_s}-1)^{\frac{1}{2N}} = 2\pi\times10.525krad/s \\ Ωc=Ωp(100.1αp−1)−2N1=2π×5.2755krad/sΩs′=Ωc(100.1αs−1)2N1=2π×10.525krad/s
算出截止频率后,返回去算出的阻带截止频率 Ω s ′ \Omega_s' Ωs′比题中给的 Ω s \Omega_s Ωs小,因此,过渡带小于指标要求。或者说,在 Ω s = 2 π × 12 k r a d / s \Omega_s=2\pi\times12krad/s Ωs=2π×12krad/s时衰减大于30 dB,所以说阻带指标有富余量。
将 p = s / Ω c p=s/\Omega_c p=s/Ωc带入 G a ( p ) G_a(p) Ga(p)中得:
H a ( s ) = Ω c 5 s 5 + b 4 Ω c s 4 + b 3 Ω c 2 s 3 + b 2 Ω c 3 s 2 + b 1 Ω c 4 s + b 0 Ω c 5 H_a(s) = \frac{\Omega_c^5}{s^5 + b_4\Omega_cs^4 + b_3\Omega_c^2s^3 + b_2\Omega_c^3s^2 + b_1\Omega_c^4s + b_0\Omega_c^5} Ha(s)=s5+b4Ωcs4+b3Ωc2s3+b2Ωc3s2+b1Ωc4s+b0Ωc5Ωc5
MATLAB代码:
clear, clc;
wp = 2 * pi * 5000;
ws = 2 * pi * 12000;
Rp = 2;
As = 30;
[N, wc] = buttord(wp, ws, Rp, As, 's'); % 计算阶数N和3dB截止频率
[B, A] = butter(N, wc, 's'); % 计算滤波器系统函数分子分母多项式系数
% B
% Ha(s) = ------------------------------------------------------------
% s^n + A(2)s^{n-1} + A(3)s^{n-2} + ... + A(n-1)s + A(n)
k = 0:511;
fk = 0:14000/512:14000;
wk = 2 * pi * fk;
Hk = freqs(B, A, wk);
plot(fk/1000, 20 * log10(abs(Hk))); grid on;
xlabel('频率(kHz)'); ylabel('幅度(dB)');
axis([0, 14, -40, 5]);
用MATLAB设计巴特沃斯滤波器(成电DSP书上P160有详细说明):
[Z, P, K] = buttap(N);
[N, wc] = buttord(wp, ws, Rp, As);
[N, wc] = buttord(wp, ws, Rp, As, 's');
[B, A] = butter(N, wc, 'ftype');
[B, A] = butter(N, wc, 'ftype', 's')
其幅度平方函数为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ε 2 C N 2 ( Ω Ω p ) |H_a(j\Omega)|^2=\frac{1}{1+\varepsilon^2C_N^2(\frac{\Omega}{\Omega_p})} ∣Ha(jΩ)∣2=1+ε2CN2(ΩpΩ)1
式中, ε \varepsilon ε为小于1的正数。
会用MATLAB提供的函数即可。
通过某些方法得到了低通滤波器后,再通过频率变换就可以得到高通、带通和带阻滤波器。
令截止频率 ω c = 1 \omega_c=1 ωc=1:
H ( s ) = ω c s + ω c = 1 s + 1 H(s)=\frac{\omega_c}{s+\omega_c}\\=\frac{1}{s+1} H(s)=s+ωcωc=s+11
我们的目标是:
所以,令 s → ω c s s{\rightarrow}\frac{\omega_c}{s} s→sωc即可,则传递函数变为:
H ′ ( s ) = s s + ω c H'(s)=\frac{s}{s+\omega_c} H′(s)=s+ωcs
我们的目标是:
所以,令 s → s 2 + ω 0 2 B s s{\rightarrow}\frac{s^2+\omega_0^2}{Bs} s→Bss2+ω02即可,其中 ω 0 2 = ω l ω h , B = ω h − ω l \omega_0^2=\omega_l\omega_h,\ B=\omega_h-\omega_l ω02=ωlωh, B=ωh−ωl,则传递函数变为:
H ′ ( s ) = B s s 2 + B s + ω 0 2 H'(s)=\frac{Bs}{s^2+Bs+\omega_0^2} H′(s)=s2+Bs+ω02Bs
我们的目标是:
所以,令 s → B s s 2 + ω 0 2 s{\rightarrow}\frac{Bs}{s^2+\omega_0^2} s→s2+ω02Bs即可,其中 ω 0 2 = ω l ω h , B = ω h − ω l \omega_0^2=\omega_l\omega_h,\ B=\omega_h-\omega_l ω02=ωlωh, B=ωh−ωl,则传递函数变为:
H ′ ( s ) = s 2 + ω 0 2 s 2 + B s + ω 0 2 H'(s)=\frac{s^2+\omega_0^2}{s^2+Bs+\omega_0^2} H′(s)=s2+Bs+ω02s2+ω02
为了叙述方便,定义 p = η + j λ p=\eta + j\lambda p=η+jλ的归一化复变量,其通带边界频率记为 λ p \lambda_p λp, λ \lambda λ称为归一化频率。 s = δ + j Ω s=\delta+j\Omega s=δ+jΩ是 H d ( s ) H_d(s) Hd(s)的复变量。
如一阶巴特沃斯低通原型系统函数为:
G ( p ) = 1 p + 1 G(p) = \frac{1}{p + 1} G(p)=p+11
显然,其中3 dB截止频率 λ p = 1 \lambda_p=1 λp=1是关于3 dB截止频率归一化的。
H d ( s ) = Q ( p ) ∣ p = F ( s ) Q ( p ) = H d ( s ) ∣ s = F − ( p ) H_d(s) = Q(p)|_{p = F(s)} \\ Q(p) = H_d(s)|_{s = F^-(p)} Hd(s)=Q(p)∣p=F(s)Q(p)=Hd(s)∣s=F−(p)
注意:
p = λ p Ω p h s λ = − λ p Ω p h Ω H H P ( s ) = Q ( p ) ∣ p = λ p Ω p h / s p = \frac{\lambda_p\Omega_{ph}}{s} \\ \lambda = -\frac{\lambda_p\Omega_{ph}}{\Omega} \\ H_{HP}(s) = Q(p)|_{p = \lambda_p\Omega_{ph}/s} p=sλpΩphλ=−ΩλpΩphHHP(s)=Q(p)∣p=λpΩph/s
设计巴特沃斯模拟高通滤波器,要求通带边界频率为4kHz,阻带边界频率为1kHz,通带最大衰减为0.1 dB,阻带最小衰减为40 dB。
选择归一化低通滤波器 Q ( p ) Q(p) Q(p),即取 Q ( p ) Q(p) Q(p)的通带边界频率 λ p = 1 \lambda_p=1 λp=1,则:
λ s = − λ p Ω p h Ω s = 2 π × 4000 2 π × 1000 = 4 {\color{blue}\lambda_s} = -\frac{\lambda_p\Omega_{ph}}{{\color{blue}\Omega_s}} \\ = \frac{2\pi\times4000}{2\pi\times1000} \\ = 4 λs=−ΩsλpΩph=2π×10002π×4000=4
转换得到低通滤波器的指标为:通带边界频率 λ p = 1 \lambda_p=1 λp=1,阻带边界频率 λ s = 4 \lambda_s=4 λs=4,通带最大衰减 α p = 0.1 d B \alpha_p=0.1dB αp=0.1dB,阻带最小衰减 α s = 40 d B \alpha_s=40dB αs=40dB。
根据低通滤波器的指标设计相应的归一化低通系统函数 Q ( p ) Q(p) Q(p),然后通过频率转换即得高通滤波器系统函数 H H P ( s ) H_{HP}(s) HHP(s)。
MATLAB代码:
wp = 1; ws = 4; Rp = 0.1; As = 40;
[N, wc] = buttord(wp, ws, Rp, As, 's');
% 一、
[B, A] = butter(N, wc, 's');
wph = 2 * pi * 4000;
[BH, AH] = lp2hp(B, A, wph);
%二、 或者直接
[BH, AH] = butter(N, wc, 'high', 's');
p = λ p s 2 + Ω 0 2 B w s λ = − λ p Ω 0 2 − Ω 2 Ω B w H B P ( s ) = Q ( p ) ∣ p = λ p s 2 + Ω 0 2 B w s Ω p l Ω p u = Ω s l Ω s u = Ω 0 2 p = \lambda_p\frac{s^2 + \Omega_0^2}{B_ws} \\ \lambda = -\lambda_p\frac{\Omega_0^2 - \Omega^2}{{\Omega}B_w} \\ H_{BP}(s) = Q(p)|_{p = \lambda_p\frac{s^2+\Omega_0^2}{B_ws}} \\ \Omega_{pl}\Omega_{pu} = \Omega_{sl}\Omega_{su} = \Omega_0^2 p=λpBwss2+Ω02λ=−λpΩBwΩ02−Ω2HBP(s)=Q(p)∣p=λpBwss2+Ω02ΩplΩpu=ΩslΩsu=Ω02
如果原指标不满足上通带(阻带)边界频率关于中心频率 Ω 0 \Omega_0 Ω0几何对称,则需要改变其中一个边界频率。
设计巴特沃斯模拟带通滤波器,要求通带上、下边界频率分别是4kHz和7kHz,阻带上、下边界频率分别为2kHz和9kHz,通带最大衰减为1 dB,阻带最大衰减为20 dB。
f p l = 4 k H z , f p u = 7 k H z , α p = 1 d B f s l = 2 k H z , f s u = 9 k H z , α s = 20 d B f p l f p u = 4000 × 7000 = 28 × 1 0 6 f s l f s u = 2000 × 9000 = 18 × 1 0 6 ∵ f p l f p u > f s l f s u ∴ f s l = f p l f p u f s u = 3.111 k H z f_{pl} = 4kHz,\ f_{pu} = 7kHz,\ \alpha_p = 1dB \\ f_{sl} = 2kHz,\ f_{su} = 9kHz,\ \alpha_s = 20dB \\ f_{pl}f_{pu} = 4000\times7000 = 28\times10^6 \\ f_{sl}f_{su} = 2000\times9000 = 18\times10^6 \\ {\because}{\quad}f_{pl}f_{pu}>f_{sl}f_{su} \\ {\therefore}{\quad}f_{sl} = \frac{f_{pl}f_{pu}}{f_{su}} = 3.111kHz \\ fpl=4kHz, fpu=7kHz, αp=1dBfsl=2kHz, fsu=9kHz, αs=20dBfplfpu=4000×7000=28×106fslfsu=2000×9000=18×106∵fplfpu>fslfsu∴fsl=fsufplfpu=3.111kHz
通过映射关系,将希望设计的带通滤波器指标转换为相应的低通原型滤波器 Q ( p ) Q(p) Q(p)的指标,选择 Q ( p ) Q(p) Q(p)作为归一化低通,即取 Q ( p ) Q(p) Q(p)的通带边界频率 λ p = 1 \lambda_p=1 λp=1。因为 λ = λ s \lambda=\lambda_s λ=λs的映射为 − Ω s l -\Omega_{sl} −Ωsl,所以将 λ p = 1 , λ = λ s , Ω = Ω s l \lambda_p=1,\lambda=\lambda_s,\Omega=\Omega_{sl} λp=1,λ=λs,Ω=Ωsl带入可得:
λ s = − λ p Ω 0 2 − Ω s 2 Ω s B w = − f 0 2 − f s l 2 f s l B w = 1.9630 \lambda_s = -\lambda_p\frac{\Omega_0^2 - \Omega_s^2}{{\Omega_s}B_w} \\ = -\frac{f_0^2 - f_{sl}^2}{{f_{sl}}B_w} \\ =1.9630 λs=−λpΩsBwΩ02−Ωs2=−fslBwf02−fsl2=1.9630
转换得到的归一化低通滤波器指标为: λ p = 1 , λ s = 1.963 , α p = 1 d B , α s = 20 d B \lambda_p=1,\lambda_s=1.963,\alpha_p=1dB,\alpha_s=20dB λp=1,λs=1.963,αp=1dB,αs=20dB。
p = λ s B w s s 2 + Ω 0 2 λ = − λ s Ω B w Ω 0 2 − Ω 2 H B S ( s ) = Q ( p ) ∣ p = λ s B w s s 2 + Ω 0 2 Ω p l Ω p u = Ω s l Ω s u = Ω 0 2 p = \lambda_s\frac{B_ws}{s^2 + \Omega_0^2} \\ \lambda = -\lambda_s\frac{{\Omega}B_w}{\Omega_0^2 - \Omega^2} \\ H_{BS}(s) = Q(p)|_{p = \lambda_s\frac{B_ws}{s^2 + \Omega_0^2}} \\ \Omega_{pl}\Omega_{pu} = \Omega_{sl}\Omega_{su} = \Omega_0^2 p=λss2+Ω02Bwsλ=−λsΩ02−Ω2ΩBwHBS(s)=Q(p)∣p=λss2+Ω02BwsΩplΩpu=ΩslΩsu=Ω02
设模拟滤波器的系统函数为 H a ( s ) H_a(s) Ha(s),单位冲激响应是 h a ( t ) h_a(t) ha(t), H a ( s ) = L T [ h a ( t ) ] H_a(s)=LT[h_a(t)] Ha(s)=LT[ha(t)]。对 h a ( t ) h_a(t) ha(t)进行等间隔采样,采样间隔为T,得到 h a ( n T ) h_a(nT) ha(nT),将 h ( n ) = h a ( n T ) h(n)=h_a(nT) h(n)=ha(nT)作为数字滤波器的单位冲激响应,那么数字滤波器的系统函数 H ( z ) H(z) H(z)便是 h ( n ) h(n) h(n)的Z变换。
因此脉冲响应不变法是一种时域逼近方法,它使 h ( n ) h(n) h(n)在采样点上等于 h a ( t ) h_a(t) ha(t)。由于模拟滤波器的设计结果是 H a ( s ) H_a(s) Ha(s),所以下面基于脉冲响应不变法的思想,导出直接从 H a ( s ) H_a(s) Ha(s)到 H ( z ) H(z) H(z)的转换公式。
设模拟滤波器 H a ( s ) H_a(s) Ha(s)只有单阶极点,且分母多项式的阶次高于分子多项式的阶次,将 H a ( s ) H_a(s) Ha(s)用部分分式表示并进行推导:
H a ( s ) = ∑ i = 1 N A i s − s i h a ( t ) = L [ H a ( s ) ] = ∑ i = 1 N A i e s i t u ( t ) h ( n ) = h a ( n T ) = ∑ i = 1 N A i e s i n T u ( n T ) H ( z ) = ∑ i = 1 N A i T 1 − e s i T z − 1 H_a(s)=\sum_{i=1}^{N}\frac{A_i}{s-s_i}\\ h_a(t)=\mathscr{L}[H_a(s)]=\sum_{i=1}^{N}A_ie^{s_it}u(t)\\ h(n)=h_a(nT)=\sum_{i=1}^{N}A_ie^{s_inT}u(nT)\\ H(z)=\sum_{i=1}^{N}\frac{A_iT}{1-e^{s_iT}z^{-1}}\\ Ha(s)=i=1∑Ns−siAiha(t)=L[Ha(s)]=i=1∑NAiesitu(t)h(n)=ha(nT)=i=1∑NAiesinTu(nT)H(z)=i=1∑N1−esiTz−1AiT
即:
H a ( s ) = ∑ i = 1 N A i s − s i ( 1 ) H ( z ) = ∑ i = 1 N A i T 1 − e s i T z − 1 ( 2 ) H_a(s)=\sum_{i=1}^{N}\frac{A_i}{s-s_i}{\quad}(1)\\ H(z)=\sum_{i=1}^{N}\frac{A_iT}{1-e^{s_iT}z^{-1}}{\quad}(2) Ha(s)=i=1∑Ns−siAi(1)H(z)=i=1∑N1−esiTz−1AiT(2)
我们已经得到直接从 H a ( s ) H_a(s) Ha(s)到 H ( z ) H(z) H(z)的转换公式了,下面分析从模拟滤波器 H a ( s ) H_a(s) Ha(s)转换到数字滤波器 H ( z ) H(z) H(z),s平面和z平面之间的映射关系,从而找到这种转换方式(即式(1)到式(2))的优缺点。这里以理想采样信号 h ^ a ( t ) \hat{h}_a(t) h^a(t)作为桥梁,推导其映射关系,即推导 h ^ a ( t ) \hat{h}_a(t) h^a(t)与 H ( z ) H(z) H(z)之间的映射关系。
∵ h ^ a ( t ) = ∑ n = − ∞ + ∞ h a ( t ) δ ( t − n T ) ∴ H ^ a ( s ) = L [ h ^ a ( t ) ] = ∫ − ∞ + ∞ h ^ a ( t ) e − s t d t = ∫ − ∞ + ∞ [ ∑ n = − ∞ + ∞ h a ( t ) δ ( t − n T ) ] e − s t d t = ∫ − ∞ + ∞ [ ∑ n = − ∞ + ∞ h a ( n T ) δ ( t − n T ) ] e − s n T d t = ∑ n = − ∞ + ∞ h a ( n T ) e − s n T ∫ − ∞ + ∞ δ ( t − n T ) d t = ∑ n = − ∞ + ∞ h a ( n T ) e − s n T {\because}{\quad}\hat{h}_a(t)=\sum_{n=-\infin}^{+\infin}h_a(t)\delta(t-nT)\\ {\therefore}{\quad}\hat{H}_a(s)=\mathscr{L}[\hat{h}_a(t)]=\int_{-\infin}^{+\infin}\hat{h}_a(t)e^{-st}d_t\\ =\int_{-\infin}^{+\infin}[\sum_{n=-\infin}^{+\infin}h_a(t)\delta(t-nT)]e^{-st}d_t\\ =\int_{-\infin}^{+\infin}[\sum_{n=-\infin}^{+\infin}h_a({\color{blue}nT})\delta(t-nT)]e^{-s{\color{blue}nT}}d_t\\ =\sum_{n=-\infin}^{+\infin}h_a(nT)e^{-snT}{\color{red}\int_{-\infin}^{+\infin}\delta(t-nT)d_t}\\ =\sum_{n=-\infin}^{+\infin}h_a(nT)e^{-snT} ∵h^a(t)=n=−∞∑+∞ha(t)δ(t−nT)∴H^a(s)=L[h^a(t)]=∫−∞+∞h^a(t)e−stdt=∫−∞+∞[n=−∞∑+∞ha(t)δ(t−nT)]e−stdt=∫−∞+∞[n=−∞∑+∞ha(nT)δ(t−nT)]e−snTdt=n=−∞∑+∞ha(nT)e−snT∫−∞+∞δ(t−nT)dt=n=−∞∑+∞ha(nT)e−snT
式中, h a ( n T ) h_a(nT) ha(nT)是 h a ( t ) h_a(t) ha(t)在采样点 t = n T t=nT t=nT时的幅度值,它与序列 h ( n ) h(n) h(n)的幅度值相等,即 h ( n ) = h a ( n T ) h(n)=h_a(nT) h(n)=ha(nT),因此得到:
H ^ a ( s ) = ∑ n = − ∞ + ∞ h ( n ) e − s n T = ∑ n = − ∞ + ∞ h ( n ) z − n ∣ z = e s T = H ( z ) ∣ z = e s T \hat{H}_a(s)=\sum_{n=-\infin}^{+\infin}h(n)e^{-snT}\\ =\sum_{n=-\infin}^{+\infin}h(n)z^{-n}|_{z=e^{sT}}\\ =H(z)|_{z=e^{sT}} H^a(s)=n=−∞∑+∞h(n)e−snT=n=−∞∑+∞h(n)z−n∣z=esT=H(z)∣z=esT
上式表明理想采样信号 h ^ a ( t ) \hat{h}_a(t) h^a(t)的拉氏变换与相应采样序列 h ( n ) h(n) h(n)的Z变换之间的映射关系为:
z = e s T l e t s = δ + j Ω , z = r e j ω { r = e δ T ω = Ω T z=e^{sT}\\ let{\quad}s={\delta}+j\Omega,\ z=re^{j\omega}\\ \begin{cases} r=e^{{\delta}T} \\ \omega={\Omega}T \end{cases} z=esTlets=δ+jΩ, z=rejω{r=eδTω=ΩT
因此:
{ δ = 0 , r = 1 δ < 0 , r < 1 δ > 0 , r > 1 \begin{cases} \delta=0,\ r=1\\ \delta<0,\ r<1\\ \delta>0,\ r>1 \end{cases} ⎩⎪⎨⎪⎧δ=0, r=1δ<0, r<1δ>0, r>1
上式说明,s平面的虚轴映射为z平面的单位圆;s平面的左半平面映射为z平面单位圆内;s平面的右半平面映射为z平面单位圆外。这说明,如果 H a ( s ) H_a(s) Ha(s)因果稳定,转换后得到的 H ( z ) H(z) H(z)仍是稳定的。
待补:讨论数字滤波器的频响特性与模拟滤波器的频响特性之间的关系(P179)。
脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。产生的原因是模拟低通滤波器不是带限于折叠频率 π / T {\pi}/T π/T,在离散化(采样)后产生了频谱混叠,再通过映射关系 z = e s T z=e^{sT} z=esT,使数字滤波器在 ω = π \omega=\pi ω=π附近形成了频谱混叠。
为了克服这一缺点,可以采用非线性频率压缩方法,将整个模拟频率轴压缩到 ± π / T \pm\pi/T ±π/T之间,再用 z = e s T z=e^{sT} z=esT转换到z平面上。这里用正切变换实现频率压缩:
Ω = 2 T tan ( 1 2 Ω 1 T ) \Omega=\frac{2}{T}\tan{\left(\frac{1}{2}{\Omega_1}T\right)} Ω=T2tan(21Ω1T)
式中,T仍是采样间隔。当 Ω 1 \Omega_1 Ω1从 − π / T -\pi/T −π/T经过0变化到 − π / T -\pi/T −π/T时, Ω \Omega Ω则由 − ∞ -\infin −∞经过0变换到 + ∞ +\infin +∞,实现了s平面上整个虚轴完全压缩到s1平面上虚轴的 ± π / T \pm\pi/T ±π/T之间的转换。
s = 2 T 1 − z − 1 1 + z − 1 ( 1 ) z = 2 T + s 2 T − s s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}{\quad}(1)\\ z=\frac{\frac{2}{T}+s}{\frac{2}{T}-s} s=T21+z−11−z−1(1)z=T2−sT2+s
先分析模拟频率 Ω \Omega Ω和数字频率 ω \omega ω之间的关系,令 s = j Ω , z = e j ω s=j\Omega,\ z=e^{j\omega} s=jΩ, z=ejω,并带入式(1)得到:
j Ω = 2 T 1 − e − j ω 1 + e − j ω Ω = 2 T tan ( 1 2 ω ) j\Omega=\frac{2}{T}\frac{1-e^{-j\omega}}{1+e^{-j\omega}}\\ \Omega=\frac{2}{T}\tan{(\frac{1}{2}\omega)} jΩ=T21+e−jω1−e−jωΩ=T2tan(21ω)
上式说明,s平面上的 Ω \Omega Ω与z平面的 ω \omega ω成非线性正切关系。
正是这种非线性关系,消除了频谱混叠现象。
可见,对于双线性变换而言,在s域的频率和z域对应的频率不同,发生了一定的弯曲,也就意味着截止频率在s域和在z域是不一样的,现在我们需要找到这种关系(省略掉推导),在z域,假设截止频率为 f d f_d fd,则:
f a = f s π tan ( π f d f s ) f_a=\frac{f_s}{\pi}\tan{\left(\frac{{\pi}f_d}{f_s}\right)} fa=πfstan(fsπfd)
也就是说对于双线性变而言,模拟的截止频率和数字的截止频率是不同的,不同的原因是因为双线性变换是近似变换,不是准确换算。
但是,当 f s > > f d f_s>>f_d fs>>fd时,即采样频率远大于截止频率时,可以得到:
f a = f s π tan ( π f d f s ) ≈ f s π ( π f d f s ) = f d f_a=\frac{f_s}{\pi}\tan{\left(\frac{{\pi}f_d}{f_s}\right)}{\approx}\frac{f_s}{\pi}\left(\frac{{\pi}f_d}{f_s}\right)=f_d fa=πfstan(fsπfd)≈πfs(fsπfd)=fd
有了前面的说明,就可以设计IIR滤波器了,基本步骤如下:
比如:现在假设要设计一个低通滤波器,截止频率为 f d = 10 H z f_d=10Hz fd=10Hz,采样频率为 f s = 50 H z f_s=50Hz fs=50Hz。
IIR数字滤波器设计总结
无限冲激响应滤波器的设计,首先从三个模拟原型低通滤波器的设计开始,即巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器。
由这三种模拟低通滤波器,通过变量变换的方法,可以得到其他三种模拟滤波器,即模拟高通、模拟带通和模拟带阻滤波器。
利用模拟滤波器设计数字滤波器,即从s平面向z平面的变换,该变换需要满足两个基本要求 :
因此产生了两种映射方法,即脉冲响应不变法和双线性变换法。这里的映射包含四个:
脉冲响应不变法的优点是设计简单,缺点是可能会产生频谱混叠失真,因此只能用于带限的模拟滤波器,如低通和带通滤波器。双线性变换法是一一映射,优点是不会产生频谱混叠,缺点是变换是非线性的,会产生频率畸形,但是可以通过频率的预畸变来加以校正。
除了上面的两种方法外,还有其它的方法,具体参见(点我)