设计低通滤波器:要求通带截止频率为0.3π,最大衰减为2dB;阻带截止频率为0.6π,最小衰减为50dB,以及画出该滤波器的幅频特性曲线和相频特性曲线,代码怎么写(分别使用matlab和python)
时间: 2023-06-02 19:04:10 浏览: 249
好的,我可以为您提供关于低通滤波器的解决方案。以下是代码示例:
Matlab代码:
% 定义通带截止频率和阻带截止频率
wp = 0.3*pi;
ws = 0.6*pi;
% 定义最大衰减(通带最大衰减)
Rp = 2;
% 定义最小衰减(阻带最小衰减)
Rs = 50;
% 将截止频率归一化到π
wpn = wp/pi;
wsn = ws/pi;
% 计算通带和阻带的边界截止频率
omega_p = 2*tan(wp/2);
omega_s = 2*tan(ws/2);
% 计算阻带和通带的截止角频率
B = omega_s - omega_p;
Omega_0 = sqrt(omega_s * omega_p);
% 根据最大衰减和最小衰减,计算通带增益和阻带增益
Ap = 1;
As = 10^(-Rs/20);
% 计算所需的滤波器阶数
N = ceil(log10((10^(Rp/20) - 1) / (10^(Rs/20) - 1)) / (2*log10(Omega_0)));
% 计算声学阻抗转换频率
f0 = Omega_0 / (2*pi);
% 使用ellip函数设计滤波器
[b, a] = ellip(N, Rp, Rs, Omega_0, 'low');
% 画出滤波器的幅频和相频特性曲线
[h, w] = freqz(b, a);
mag = 20*log10(abs(h));
phase = unwrap(angle(h));
figure;
subplot(2,1,1);
plot(w/pi, mag);
axis([0 1 -60 5]);
ylabel('幅值(dB)');
title('滤波器的幅频和相频特性曲线');
grid on;
subplot(2,1,2);
plot(w/pi, phase);
ylabel('相位(rad)');
xlabel('频率(πrad/sample)');
grid on;
Python代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import ellip, freqz
# 定义通带截止频率和阻带截止频率
wp = 0.3*np.pi
ws = 0.6*np.pi
# 定义最大衰减(通带最大衰减)
Rp = 2
# 定义最小衰减(阻带最小衰减)
Rs = 50
# 将截止频率归一化到π
wpn = wp/np.pi
wsn = ws/np.pi
# 计算通带和阻带的边界截止频率
omega_p = 2*np.tan(wp/2)
omega_s = 2*np.tan(ws/2)
# 计算阻带和通带的截止角频率
B = omega_s - omega_p
Omega_0 = np.sqrt(omega_s * omega_p)
# 根据最大衰减和最小衰减,计算通带增益和阻带增益
Ap = 1
As = 10**(-Rs/20)
# 计算所需的滤波器阶数
N = np.ceil(np.log10((10**(Rp/20) - 1) / (10**(Rs/20) - 1)) / (2*np.log10(Omega_0)))
# 计算声学阻抗转换频率
f0 = Omega_0 / (2*np.pi)
# 使用ellip函数设计滤波器
b, a = ellip(N, Rp, Rs, Omega_0, 'low')
# 画出滤波器的幅频和相频特性曲线
w, h = freqz(b, a)
mag = 20*np.log10(np.abs(h))
phase = np.unwrap(np.angle(h))
plt.figure()
plt.subplot(2,1,1)
plt.plot(w/np.pi, mag)
plt.axis([0, 1, -60, 5])
plt.ylabel('幅值(dB)')
plt.title('滤波器的幅频和相频特性曲线')
plt.grid(True)
plt.subplot(2,1,2)
plt.plot(w/np.pi, phase)
plt.xlabel('频率(πrad/sample)')
plt.ylabel('相位(rad)')
plt.grid(True)
plt.show()
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)