切比雪夫Ⅱ型濾波器特點:
1、幅度特性是在一個頻帶內(通帶或阻帶)范圍內具有等波紋特性;
2、Ⅱ型在通帶范圍內是單調的,在阻帶范圍內是等波紋的。
測試代碼:
% Cheby2Filter.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; %設計一個切比雪夫低通濾波器,要求把50Hz的頻率分量保留,其他分量濾掉 wp = 55/(fs/2); %通帶截止頻率,取50~100中間的值,並對其歸一化 ws = 60/(fs/2); %阻帶截止頻率,取50~100中間的值,並對其歸一化 alpha_p = 3; %通帶允許最大衰減為 db alpha_s = 40;%阻帶允許最小衰減為 db %獲取階數和截止頻率 [ N1 wc1 ] = cheb2ord( wp , ws , alpha_p , alpha_s); %獲得轉移函數系數 [ b a ] = cheby2(N1,alpha_s,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('低通濾波后頻域相位特性'); %設計一個高通濾波器,要求把400Hz的頻率分量保留,其他分量濾掉 wp = 350/(fs/2); %通帶截止頻率,取200~400中間的值,並對其歸一化 ws = 380/(fs/2); %阻帶截止頻率,取200~400中間的值,並對其歸一化 alpha_p = 3; %通帶允許最大衰減為 db alpha_s = 40;%阻帶允許最小衰減為 db %獲取階數和截止頻率 [ N2 wc2 ] = cheb2ord( wp , ws , alpha_p , alpha_s); %獲得轉移函數系數 [ b a ] = cheby2(N2,alpha_s,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('高通濾波后頻域相位特性'); %設計一個帶通濾波器,要求把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 = 40;%阻帶允許最小衰減為 db %獲取階數和截止頻率 [ N3 wn ] = cheb2ord( wp , ws , alpha_p , alpha_s); %獲得轉移函數系數 [ b a ] = cheby2(N3,alpha_s,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('帶通濾波后頻域相位特性'); %設計一個帶阻濾波器,要求把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 = 40;%阻帶允許最小衰減為 db %獲取階數和截止頻率 [ N4 wn ] = cheb2ord( wp , ws , alpha_p , alpha_s); %獲得轉移函數系數 [ b a ] = cheby2(N4,alpha_s,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('帶阻濾波后頻域相位特性');
效果:
原始信號:
生成的低通濾波器和濾波后的效果:
生成的高通濾波器和濾波后的效果:
生成的帶通濾波器和濾波后的效果:
生成的帶阻濾波器和濾波后的效果: