分析如下代码;clear;clc; % 滤波器要求 wp = 2*pi*10e3; % 通带截止频率 ws = 2*pi*12e3; % 阻带起始频率 Rp = 0.5; % 通带最大衰减 Rs = 30; % 阻带最小衰减 % 计算滤波器参数 [n, wn] = buttord(wp, ws, Rp, Rs, 's'); % 巴特沃斯滤波器的阶数和截止频率 [b, a] = butter(n, wn, 's'); % 巴特沃斯滤波器的分子和分母 % 绘制幅频响应曲线 w = linspace(0, 2*pi*20000, 1000); [h, f] = freqs(b, a, w); mag = 20*log10(abs(h));%dB phase = angle(h); figure; subplot(2,1,1);plot(f/(2*pi), mag);title('低通Butterworth滤波器幅频特性');xlabel('频率(Hz)');ylabel('幅度响应(dB)'); subplot(2,1,2);plot(f/(2*pi), phase);title('低通Butterworth滤波器相频特性');xlabel('频率(Hz)');ylabel('相位(度)'); % 输出滤波器参数 disp('滤波器阶数:');disp(n); disp('滤波器截止频率(Hz):');disp(wn/(2*pi)); % 双线性变换法 % 计算规格化频率 wp_norm = wp/(2*pi); ws_norm = ws/(2*pi); % 计算滤波器阶数 [n, Wn] = buttord(wp_norm, ws_norm, Rp, Rs, 's'); % 计算模拟Butterworth滤波器的分母和分子多项式系数 [b, a] = butter(n, Wn, 's'); % 采样频率 fs = 2*wp; [bz, az] = bilinear(b, a, fs); %频率响应 [H, w] = freqz(bz, az, 1024); f = w/(2*pi)*fs; H_db = 20*log10(abs(H)); % 绘制幅频特性 figure; subplot(2,1,1);plot(f, H_db);title('低通Butterworth滤波器幅频特性');xlabel('频率(Hz)');ylabel('幅度响应(dB)'); % 绘制相频特性 phi = unwrap(angle(H))*180/pi; subplot(2,1,2);plot(f, phi);title('低通Butterworth滤波器相频特性');xlabel('频率(Hz)');ylabel('相位(度)');
时间: 2024-02-29 10:54:57 浏览: 113
RC LC截止频率计算器
这段代码实现了一个低通Butterworth滤波器的设计和绘制,具体流程如下:
1. 设置滤波器的通带截止频率wp、阻带起始频率ws、通带最大衰减Rp、阻带最小衰减Rs。
2. 利用buttord函数计算出巴特沃斯滤波器的阶数n和截止频率wn。
3. 利用butter函数计算出巴特沃斯滤波器的分子b和分母a。
4. 利用freqs函数计算出滤波器的频率响应h,并将其转换为dB形式的幅度mag和相位角phase。
5. 绘制滤波器的幅频响应曲线和相频响应曲线。
6. 输出滤波器的阶数和截止频率。
7. 利用双线性变换法将模拟Butterworth滤波器转换为数字Butterworth滤波器。
8. 求取数字Butterworth滤波器的频率响应H,并将其转换为dB形式的幅度H_db和相位角phi。
9. 绘制数字Butterworth滤波器的幅频响应曲线和相频响应曲线。
总之,这段代码实现了一个低通Butterworth滤波器的设计和绘制,可以用于信号处理中的滤波器设计。
阅读全文