測試**:
%%****bin_bs.m*******************%%效果:濾波器特性:%% 使用雙線性變換法設計帶阻濾波器
%% 2023年6月13日 16:48:04
%% author:alimy
close all;
clear;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%**正文
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%給定數字濾波器指標
f_sl = 150 ; %阻帶下限頻率(hz)
f_1 = 200 ; %通帶下限頻率(hz)
f_3 = 500 ; %通帶上限頻率(hz)
f_sh = 600 ; %阻帶上限頻率(hz)
r_p = 0.5 ; %通帶允許的最大衰減
r_s = 40 ; %阻帶允許的最小衰減
f_s = 2000 ; %取樣頻率
t_s = 1 / f_s ; %取樣間隔
%1.將數字帶阻濾波器的頻率引數變換為歸一化的數字角頻率引數
omega_sl = 2 * pi * f_sl / f_s; %通帶下限頻率
omega_1 = 2 * pi * f_1 / f_s; %阻帶下限頻率
omgea_3 = 2 * pi * f_3 / f_s; %阻帶上限頻率
omega_sh = 2 * pi * f_sh / f_s; %通帶上限頻率
%2.預畸變處理,將歸一化數字角頻率引數變換成模擬帶阻濾波器的角頻率引數
c = 2*f_s ;
omega_sl = c * tan( omega_sl / 2 );
omega_1 = c * tan( omega_1 / 2 );
omega_3 = c * tan( omgea_3 / 2 );
omega_sh = c * tan( omega_sh / 2 );
%3.對模擬帶阻濾波器的角頻率引數做歸一化處理
omega_bw = omega_3 - omega_1;
eta_sl = omega_sl / omega_bw;
eta_1 = omega_1 / omega_bw;
eta_3 = omega_3 / omega_bw;
eta_sh = omega_sh / omega_bw;
%4.設計歸一化模擬濾波器,得到歸一化模擬帶阻濾波器的轉移函式
omega_p = [ omega_1 , omega_3 ];
omega_s = [ omega_sl , omega_sh ];
[ n , wn ] = buttord( omega_p , omega_s , r_p , r_s , 's' ); %選擇模擬巴特沃斯濾波器的最小階數
[ bs, as ] = butter(n,wn,'stop','s');
%5.利用模擬帶阻濾波器的轉移函式確定iir數字濾波器的轉移函式
[ bz , az ] = bilinear(bs,as,f_s);
figure(1);
freqz(bz,az);
title('帶阻濾波器幅度譜和相位譜特性');
%濾波效果測試
n = 1000;
t = [ 0 : n - 1 ] * t_s ;
f1 = 50;
f2 = 300;
f3 = 400;
x1 = 2*1*sin( 2 * pi * f1 * t );
x2 = 2*2*sin( 2 * pi * f2 * t );
x3 = 2*1*sin( 2 * pi * f3 * t );
x = x1 + x2 + x3;
fft_x = fft( x );
x_mag = fftshift( abs ( fft_x ) ) / n ;
x_ang = fftshift( angle ( fft_x ) );
delta_f = f_s/n;
f = ( -n / 2 : n / 2 - 1 )*delta_f;
figure(2);
subplot(3,1,1);
plot(t,x);
title('原訊號時域波形');
xlabel('t(s)');
subplot(3,1,2);
plot( f , x_mag );
title('原訊號幅度譜');
xlabel('f(hz)');
subplot(3,1,3);
plot( f , x_ang );
title('原訊號相位譜');
xlabel('f(hz)');
%濾波lp_x = filter( bz , az , x );
lp_fft_x = fft( lp_x );
lp_x_mag = fftshift( abs ( lp_fft_x ) ) / n ;
lp_x_ang = fftshift( angle ( lp_fft_x ) );
figure(3);
subplot(3,1,1);
plot(t,lp_x);
title('濾波後訊號時域波形');
xlabel('t(s)');
subplot(3,1,2);
plot( f , lp_x_mag );
title('濾波後訊號幅度譜');
xlabel('f(hz)');
subplot(3,1,3);
plot( f , lp_x_ang );
title('濾波後訊號相位譜');
xlabel('f(hz)');
待濾波的訊號:
濾波後的訊號:
Matlab 雙線性變換法設計數字帶通濾波器
測試 bin bp.m 使用雙線性變換法設計帶通濾波器 2018年6月13日 16 30 34 author alimy close all clear clc 正文 給定數字濾波器指標 f sl 150 阻帶下限頻率 hz f 1 200 通帶下限頻率 hz f 3 500 通帶上限頻率 hz f...
MATLAB實現雙線性內插演算法
用matlab簡易的實現雙線性內插演算法演算法,實現影象的縮放。具體的細節,程式注釋裡面裡面會有。講的還是清晰易懂 本實現 也是參考上面這篇博文的講解實現的 雙線性插值實現 f x,y w1 p1 w2 p2 w3 p3 w4 p4 p1,p2,p3,p4是與 x,y 最近的四個畫素點 w1,w2,...
補充 雙線性差值
opencv使用函式cv2.resize 進行影象縮放的時候,預設使用使用的插值方式是雙線性插值 cv2.inter linear 我們知道,fcn是在用雙線性插值的方式來初始化反卷積的卷積核。所以在這裡補充一下。但是其他 很少用這種方式。放在這裡,能跑通。自己用不用都行,會呼叫就行了 想深究的可以...