1.巴特沃斯模拟滤波器(低通,高通,带通,带阻)设计-MATLAB实现(蔡徐坤2018年音乐EP)
本文是模擬濾波器設計,如果需要了解數字濾波器的內容,可以按順序看我寫的另外兩篇博客,如下:
2.MATLAB實現無限脈沖響應數字濾波器(IIR)
3.MATLAB實現有限脈沖響應數字濾波器(FIR)
1. 基礎知識介紹
我們首先明確一個知識(這個非常重要):
某正弦信號,頻率為50Hz
這意味著 信號的模擬頻率 f f f= 50 (Hz),注意它的單位是Hz
信號的表達式為
y = s i n ( 2 π f t ) = s i n ( 2 π ? 50 t ) = s i n ( 100 π t ) y = sin(2\pi ft)=sin(2\pi *50 t)=sin(100\pi t) y=sin(2πft)=sin(2π?50t)=sin(100πt)
由于信號也可以表示為 y = s i n ( Ω t ) y = sin(\Omega t) y=sin(Ωt)的形式,所以這里
Ω = 2 π f = 100 π \Omega=2\pi f=100\pi Ω=2πf=100π
這里的 Ω \Omega Ω 是模擬角頻率,它的單位是rad/s。
注意模擬角頻率 Ω \Omega Ω 和模擬頻率 f f f的關系 Ω = 2 π f \Omega=2\pi f Ω=2πf
2. 函數介紹
首先介紹一些用到的MATLAB函數
2.1 buttord – 求解濾波器的階數N和3dB截止頻率wc
[N,wc] = buttord(wp, ws, Rp, As, ‘s’)
輸入參數如下:
通帶邊界模擬頻率wp、阻帶邊界模擬頻率ws(模擬角頻率,單位是rad/s)
通帶最大衰減Rp、阻帶最小衰減As(單位是dB)
‘s’指的就是模擬濾波器,設計數字濾波器時就沒有’s’這個參數了。
2.2 butter – 求解N階濾波器的具體參數B和A,求解完B和A后濾波器就設計完成了。
[B,A] = butter(N, wc, ‘ftype’, ‘s’) - 模擬濾波器設計
輸入參數如下:
N – 濾波器階數
wc – 3dB截止模擬頻率(單位rad/s,N和wc都是用buttord函數計算出來的)
ftype – 濾波器類型‘’:
(1)當輸入wc為一維向量時:
默認情況下設計的低通濾波器,設計高通濾波器的話令ftype=high
(2)當輸入wc為二維向量[wcl,wcu]時:
默認情況下設計的帶通濾波器,設計帶阻濾波器的話令ftype=stop
2.3 filter – 濾波函數
y = filter(B,A,x)
這個就是濾波函數了,
x是輸入的有噪聲的信號,
B,A就是設計好的濾波器參數
得到的輸出y就是濾波后的信號了。
3. 代碼實現:
(1)低通濾波器:
例: 設計通帶截止頻率5kHz,通帶衰減2dB,阻帶截止頻率12kHz,阻帶衰減30dB的巴特沃斯低通濾波器
由題可知,設計的是模擬濾波器,所以用到下面三個函數:
[N,wc] = buttord(wp, ws, Rp, As, ‘s’)
[B,A] = butter(N, wc, ‘ftype’, ‘s’)
y = filter(B,A,x)
劃重點 ! ! !:
模擬濾波器的頻率都是模擬角頻率 Ω \Omega Ω ,它和頻率 f f f 的關系
Ω = 2 π f \Omega = 2\pi f Ω=2πf
所以這里
wp = 2 ? p i ? 5000 2*pi*5000 2?pi?5000,ws = 2 ? p i ? 12000 2*pi*12000 2?pi?12000,Rp = 2, As = 30
代碼如下:
wp = 2 * pi * 5000;
ws = 2 * pi * 12000;
Rp = 2;
As = 30;
[N, wc] = buttord(wp, ws, Rp, As, 's');
[B, A] = butter(N, wc, 's');
上面這些代碼就設計好了濾波器
如果有輸入噪聲信號x的話,調用y = filter(B,A,x),得到的y就是濾波后的信號了。
下面是繪圖部分
為了讓濾波器的結果得到更形象的表示,我們可以畫出來它的幅頻特性曲線,代碼如下:
其中,我們使用了freqs這個函數,
h = freqs(B,A,wk)
它是用來計算當頻率為wk時,對應的頻率響應h的大小,主要是用來畫圖的。
繪圖代碼如下:
f = 0 : 10 : 14000;%取點,從0-14000,每隔10取一個點
w = 2 * pi * f;%注意模擬濾波器用的頻率都是模擬角頻率,要乘上2pi的
Hk = freqs(B,A,w);%對于取的每個點,求該處的頻率響應大小
%畫圖
figure
plot(f/1000, 20 * log10(abs(Hk)));%橫坐標單位是kHz,縱坐標單位是dB,
grid on;
%設置橫縱坐標標簽
xlabel('f/kHz');
ylabel('-A(f)/dB');
%設置橫縱坐標軸范圍
axis([0, 14, -40, 5]);
繪圖結果如下:
(2)高通濾波器:
高通濾波器與低通幾乎完全一樣,只要注意
[B,A] = butter(N, wc, ‘ftype’, ‘s’)中的 ftype=high
例: 設計通帶截止頻率4kHz,通帶衰減0.1dB,阻帶截止頻率1kHz,阻帶衰減40dB的巴特沃斯高通濾波器
代碼如下:
wp = 2 * pi * 4000;
ws = 2 * pi * 1000;
Rp = 0.1;
As = 40;
[N, wc] = buttord(wp, ws, Rp, As, 's');
[B, A] = butter(N, wc,'high', 's');%注意這個'high'
高通濾波器設計完成了
如果有輸入噪聲信號x的話,調用 y = filter(B,A,x),得到的y就是濾波后的信號了。
接著我們畫出高通濾波器的幅頻特性曲線
f = 0 : 10 : 14000;%取點,從0-14000,每隔10取一個點
w = 2 * pi * f;%注意模擬濾波器用的頻率都是模擬角頻率,要乘上2pi的
Hk = freqs(B,A,w);%對于取的每個點,求該處的頻率響應大小
%畫圖
figure
plot(f/1000, 20 * log10(abs(Hk)));%橫坐標單位是kHz,縱坐標單位是dB,
grid on;
%設置橫縱坐標標簽
xlabel('f/kHz');
ylabel('-A(f)/dB');
%設置橫縱坐標軸范圍
axis([0, 14, -60, 5]);
曲線圖如下:
(3)帶通濾波器:
例: 設計巴特沃斯帶通濾波器,通帶上下邊界頻率分別為4kHz和7kHz,通帶衰減1dB,阻帶上下邊界頻率2kHz和9kHz,阻帶衰減20dB。
濾波器設計代碼如下:
%帶通
wp = 2 * pi * [4000, 7000];
ws = 2 * pi * [2000,9000];
Rp = 1;
As = 20;
[N, wc] = buttord(wp, ws, Rp, As, 's');%此時輸入wp和ws都是二維的,輸出wc也是兩維的
[B, A] = butter(N, wc,'s');
帶通模擬濾波器設計完成了
如果有輸入噪聲信號x的話,調用y = filter(B,A,x),得到的y就是濾波后的信號了。
接著我們畫出帶通濾波器的幅頻特性曲線,如下:
f = 0 : 10 : 14000;%取點,從0-14000,每隔10取一個點
w = 2 * pi * f;%注意模擬濾波器用的頻率都是模擬角頻率,要乘上2pi的
Hk = freqs(B,A,w);%對于取的每個點,求該處的頻率響應大小
%畫圖
figure
plot(f/1000, 20 * log10(abs(Hk)));%橫坐標單位是kHz,縱坐標單位是dB,
grid on;
%設置橫縱坐標標簽
xlabel('f/kHz');
ylabel('-A(f)/dB');
%設置橫縱坐標軸范圍
axis([0, 14, -60, 5]);
曲線圖如下:
(4)帶阻濾波器:
例: 設計巴特沃斯帶阻濾波器,通帶上下邊界頻率分別為2kHz和9kHz,通帶衰減1dB,阻帶上下邊界頻率4kHz和7kHz,阻帶衰減20dB。
%帶阻
wp = 2 * pi * [2000, 9000];
ws = 2 * pi * [4000,7000];
Rp = 1;
As = 20;
[N, wc] = buttord(wp, ws, Rp, As, 's');%此時輸入wp和ws都是二維的,輸出wc也是兩維的
[B, A] = butter(N, wc,'stop','s');
帶阻模擬濾波器設計完成了,如果有輸入噪聲信號x的話,調用
y = filter(B,A,x),得到的y就是濾波后的信號了。
接著我們畫出帶阻濾波器的幅頻特性曲線,代碼如下:
f = 0 : 10 : 14000;%取點,從0-14000,每隔10取一個點
w = 2 * pi * f;%注意模擬濾波器用的頻率都是模擬角頻率,要乘上2pi的
Hk = freqs(B,A,w);%對于取的每個點,求該處的頻率響應得下
%畫圖
figure
plot(f/1000, 20 * log10(abs(Hk)));%橫坐標單位是kHz,縱坐標單位是dB,
grid on;
%設置橫縱坐標標簽
xlabel('f/kHz');
ylabel('-A(f)/dB');
%設置橫縱坐標軸范圍
axis([0, 14, -100, 5]);
結果如下:
總結
以上是生活随笔為你收集整理的1.巴特沃斯模拟滤波器(低通,高通,带通,带阻)设计-MATLAB实现(蔡徐坤2018年音乐EP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 介绍对象加微信开场白 介绍的对象加微信该
- 下一篇: Angular 依赖注入里factory