[Matlab]切比雪夫Ⅰ型滤波器设计:低通、高通、带通和带阻(2)

[Matlab]切比雪夫Ⅰ型滤波器设计:低通、高通、带通和带阻-------(2)

​ 切比雪夫滤波器,又名“车比雪夫滤波器”,是在通带或阻带上频率响应幅度等波纹波动的滤波器。切比雪夫滤波器来自切比雪夫分布,以“切比雪夫”命名,是用以纪念俄罗斯数学家巴夫尼提·列波维其·切比雪夫。

切比雪夫Ⅰ型滤波器特点:

​ 切比雪夫滤波器在过渡带比巴特沃斯滤波器的衰减快,但频率响应的幅频特性不如后者平坦。切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小,但是在通频带内存在幅度波动。

1、幅度特性是在一个频带内(通带或阻带)范围内具有等波纹特性;
2、Ⅰ型在通带范围内是等波纹的,在阻带范围内是单调的。

根据频率响应曲线波动位置的不同,切比雪夫滤波器可以分为以下两种:

I型切比雪夫滤波器

通带(或称“通频带”)上频率响应幅度等波纹波动的滤波器称为“I型切比雪夫滤波器”;

原始信号设定:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Cheby1Filter.m
%  切比雪夫Ⅰ型滤波器的设计
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
close all;
clc;

fs = 1000; %Hz 采样频率
Ts = 1/fs;
N  = 1000; %序列长度
t = (0:N-1)*Ts;
delta_f = 1*fs/N;
f1 = 50;
f2 = 100;
f3 = 200;
f4 = 400;
x1 = 2*0.5*sin(2*pi*f1*t);
x2 = 2*0.5*sin(2*pi*f2*t);
x3 = 2*0.5*sin(2*pi*f3*t);
x4 = 2*0.5*sin(2*pi*f4*t);
x = x1 + x2 + x3 + x4; %待处理信号由四个分量组成
 
X = fftshift(abs(fft(x)))/N;
X_angle = fftshift(angle(fft(x)));
f = (-N/2:N/2-1)*delta_f;
 
figure(1);
subplot(3,1,1);
plot(t,x);
title('原信号');
subplot(3,1,2);
plot(f,X);
grid on;
title('原信号频谱幅度特性');
subplot(3,1,3);
plot(f,X_angle);
title('原信号频谱相位特性');
grid on;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZDDVsYax-1573631016234)(G:\研究生\项目小组任务\笔记\第四周笔记\qubify.bmp)]

低通滤波器设计:
%设计一个切比雪夫低通滤波器,要求把50Hz的频率分量保留,其他分量滤掉
wp = 55/(fs/2);  %通带截止频率,取50~100中间的值,并对其归一化
ws = 90/(fs/2);  %阻带截止频率,取50~100中间的值,并对其归一化
alpha_p = 3; %通带允许最大衰减为 db
alpha_s = 40;%阻带允许最小衰减为 db
%获取阶数和截止频率
[ N1 wc1 ] = cheb1ord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = cheby1(N1,alpha_p,wc1,'low');
%滤波
filter_lp_s = filter(b,a,x);
X_lp_s = fftshift(abs(fft(filter_lp_s)))/N;
X_lp_s_angle = fftshift(angle(fft(filter_lp_s)));
figure(2);
freqz(b,a); %滤波器频谱特性
figure(3);
subplot(3,1,1);
plot(t,filter_lp_s);
grid on;
title('低通滤波后时域图形');
subplot(3,1,2);
plot(f,X_lp_s);
title('低通滤波后频域幅度特性');
subplot(3,1,3);
plot(f,X_lp_s_angle);
title('低通滤波后频域相位特性');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6R66EbD-1573631016238)(G:\研究生\项目小组任务\笔记\第四周笔记\lowp.bmp)]

高通滤波器设计:
%设计一个高通滤波器,要求把400Hz的频率分量保留,其他分量滤掉
wp = 350/(fs/2);  %通带截止频率,取200~400中间的值,并对其归一化
ws = 380/(fs/2);  %阻带截止频率,取200~400中间的值,并对其归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 20;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N2 wc2 ] = cheb1ord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = cheby1(N2,alpha_p,wc2,'high');
%滤波
filter_hp_s = filter(b,a,x);
X_hp_s = fftshift(abs(fft(filter_hp_s)))/N;
X_hp_s_angle = fftshift(angle(fft(filter_hp_s)));
figure(4);
freqz(b,a); %滤波器频谱特性
figure(5);
subplot(3,1,1);
plot(t,filter_hp_s);
grid on;
title('高通滤波后时域图形');
subplot(3,1,2);
plot(f,X_hp_s);
title('高通滤波后频域幅度特性');
subplot(3,1,3);
plot(f,X_hp_s_angle);
title('高通滤波后频域相位特性');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LPt70b8v-1573631016257)(G:\研究生\项目小组任务\笔记\第四周笔记\hightp.bmp)]

带通滤波器设计:
%设计一个带通滤波器,要求把50Hz和400Hz的频率分量滤掉,其他分量保留
wp = [65 385 ] / (fs/2);  %通带截止频率,50~100、200~400中间各取一个值,并对其归一化
ws = [75 375 ] / (fs/2);  %阻带截止频率,50~100、200~400中间各取一个值,并对其归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 20;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N3 wn ] = cheb1ord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = cheby1(N3,alpha_p,wn,'bandpass');
%滤波
filter_bp_s = filter(b,a,x);
X_bp_s = fftshift(abs(fft(filter_bp_s)))/N;
X_bp_s_angle = fftshift(angle(fft(filter_bp_s)));
figure(6);
freqz(b,a); %滤波器频谱特性
figure(7);
subplot(3,1,1);
plot(t,filter_bp_s);
grid on;
title('带通滤波后时域图形');
subplot(3,1,2);
plot(f,X_bp_s);
title('带通滤波后频域幅度特性');
subplot(3,1,3);
plot(f,X_bp_s_angle);
title('带通滤波后频域相位特性');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XBKXRhq-1573631016258)(G:\研究生\项目小组任务\笔记\第四周笔记\bandp.bmp)]

带阻滤波器设计:
%设计一个带阻滤波器,要求把50Hz和400Hz的频率分量保留,其他分量滤掉
wp = [65 385 ] / (fs/2);  %通带截止频率?,50~100、200~400中间各取一个值,并对其归一化
ws = [75 375 ] / (fs/2);  %阻带截止频率?,50~100、200~400中间各取一个值,并对其归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 20;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N4 wn ] = cheb1ord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = cheby1(N4,alpha_p,wn,'stop');
%滤波
filter_bs_s = filter(b,a,x);
X_bs_s = fftshift(abs(fft(filter_bs_s)))/N;
X_bs_s_angle = fftshift(angle(fft(filter_bs_s)));
figure(8);
freqz(b,a); %滤波器频谱特性
figure(9);
subplot(3,1,1);
plot(t,filter_bs_s);
grid on;
title('带阻滤波后时域图形');
subplot(3,1,2);
plot(f,X_bs_s);
title('带阻滤波后频域幅度特性');
subplot(3,1,3);
plot(f,X_bs_s_angle);
title('带阻滤波后频域相位特性');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccbiuMxk-1573631016258)(G:\研究生\项目小组任务\笔记\第四周笔记\bands.bmp)]

### 使用脉冲响应不变法设计切比雪夫滤波器 脉冲响应不变法是一种将模拟滤波器转换成数字滤波器的技术。该方法过保持系统的单位脉冲响应在采样时刻上的值相同来实现这种变换[^1]。 对于切比雪夫滤波器设计,首先需要定义所需的频率特性参数,包括边缘频率 \( f_{p1} \),\( f_{p2} \) 边缘频率 \( f_{s1} \),\( f_{s2} \)[^2]。这些参数决定了滤波器的性能指标,如最小衰减等。 接着,计算相应的角频率并考预畸变效应: \[ W_p = 2\pi F_s / T, \quad W_s = 2\pi F_s' / T \] 其中 \( T \) 是取样周期,而 \( F_s' \) 表示经过预扭曲处理后的截止频率[^3]。 为了获得理想的频响特征,在MATLAB或其他编程环境中可以调用内置函数完成具体操作。下面给出一段Python代码作为例子展示如何利用SciPy库中的`signal.iirfilter()` 函数创建一个离散时间域内的Chebyshev Type I bandpass filter: ```python from scipy import signal import numpy as np def design_cheby1_bp(wp_low, wp_high, ws_low, ws_high, gpass, gstop, fs): nyq = 0.5 * fs # Normalize the frequencies to Nyquist frequency (half of sampling rate) low_wp_norm = wp_low / nyq high_wp_norm = wp_high / nyq low_ws_norm = ws_low / nyq high_ws_norm = ws_high / nyq # Design Chebyshev type-I analog prototype filter with specified passband and stopband ripples. N, wn = signal.cheb1ord([low_wp_norm, high_wp_norm], [low_ws_norm, high_ws_norm], gpass=gpass, gstop=gstop) # Convert it into a digital filter using impulse-invariant transformation method. b, a = signal.iirdesign(wn, rp=gpass, rs=gstop,ftype='cheby1',fs=fs,output='ba') return b,a,N # Example usage: wp_low = 100 # Passband lower edge in Hz wp_high = 200 # Passband upper edge in Hz ws_low = 80 # Stopband lower edge in Hz ws_high = 220 # Stopband upper edge in Hz gpass = 1 # Maximum loss in passband (dB) gstop = 40 # Minimum attenuation in stopband (dB) fs = 1000 # Sampling frequency in Hz b, a, order = design_cheby1_bp(wp_low, wp_high, ws_low, ws_high, gpass, gstop, fs) print(f"Filter coefficients:\nb={b}\na={a}") print(f"The designed filter has an order of {order}.") ``` 此段程序实现了基于给定规格化边界条件下的切比雪夫I类滤波器设计过程,并返回了其传递函数系数以及阶数信息。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泸州月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值