在matlab用等波纹法设计一个奈奎斯特低通滤波器
时间: 2024-05-11 12:13:44 浏览: 125
1. 首先确定滤波器的通带截止频率和阻带截止频率。
2. 计算滤波器的阶数,可以使用公式:$N=\frac{\log_{10}\left(\frac{1}{A_p}\right)\cdot\log_{10}\left(\frac{\omega_s}{\omega_p}\right)}{2\cdot\log_{10}\left(\frac{1}{A_s}\right)}$,其中$A_p$为通带最大衰减,$A_s$为阻带最小衰减,$\omega_s$为阻带截止频率,$\omega_p$为通带截止频率。
3. 计算等波纹通带和阻带的最大衰减量$R_p$和$R_s$,可以使用公式:$R_p=1-\frac{1}{\sqrt{1+\delta_p^2}}$,$R_s=\frac{1}{\sqrt{1+\delta_s^2}}$,其中$\delta_p=\frac{10^{0.05A_p}-1}{10^{0.05A_p}+1}$,$\delta_s=\frac{10^{-0.05A_s}-1}{10^{-0.05A_s}+1}$。
4. 根据阶数和截止频率计算出滤波器的极点和零点。对于一个N阶低通滤波器,其极点和零点为:$z_k=e^{j\frac{(2k+N-1)\pi}{2N}}$,$p_k=\epsilon\cdot e^{j\frac{(2k+N-1)\pi}{2N}}$,其中$k=1,2,...,N$,$\epsilon$为归一化的极点半径,其值为:$\epsilon=\frac{1}{\sqrt{1+\delta_p^2}}$。
5. 根据极点和零点可以得到滤波器的传递函数:$H(z)=\frac{K\cdot\prod_{k=1}^{N}(z-z_k)}{\prod_{k=1}^{N}(z-p_k)}$,其中$K$为归一化系数,其值为:$K=\frac{1}{\left|H(e^{j\omega})\right|_{\omega=\omega_p}}$。
6. 绘制滤波器的幅频响应和相频响应。
以下是matlab代码实现:
```
% 定义通带截止频率和阻带截止频率
wp = 0.3*pi;
ws = 0.6*pi;
% 定义通带最大衰减和阻带最小衰减
Ap = 1;
As = 30;
% 计算滤波器的阶数
N = ceil((log10(1/Ap)*log10(ws/wp))/(2*log10(1/As)));
% 计算等波纹通带和阻带的最大衰减量
delta_p = (10^(0.05*Ap)-1)/(10^(0.05*Ap)+1);
delta_s = (10^(-0.05*As)-1)/(10^(-0.05*As)+1);
Rp = 1-1/sqrt(1+delta_p^2);
Rs = 1/sqrt(1+delta_s^2);
% 计算极点和零点
epsilon = 1/sqrt(1+delta_p^2);
for k = 1:N
z(k) = exp(1j*((2*k+N-1)*pi)/(2*N));
p(k) = epsilon*exp(1j*((2*k+N-1)*pi)/(2*N));
end
% 计算归一化系数
K = 1/abs(polyval(poly(z),exp(1j*wp)));
% 计算传递函数
num = K*poly(z);
den = poly(p);
H = tf(num,den);
% 绘制幅频响应和相频响应
figure;
freqz(num,den);
title('Magnitude and Phase Response');
```
阅读全文