[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)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章