濾波器設計
⑴ 基於matlab數字濾波器的設計
摘要
《數字信號處理》課程是一門理論性和實踐性都很強, 它具備高等代數、數值分析、概率統計、隨機過程等計算學科的知識; 要求我們學生掌握扎實的基礎知識和理論基礎。 又是跟其他學科密切相關,即與通信理論、計算機、微電子技術不可分,又是人工智慧、模式識別、神經網路等新興學科的理論基礎之一。 本次數字濾波器設計方法是基於MATLAB的數字濾波器的設計。此次設計的主要內容為:IIR數字濾波器和FIR數字濾波器的設計
關鍵詞:IIR、FIR、低通、高通、帶阻、帶通
Abstract
"Digital Signal Processing" is a theoretical and practical nature are strong, and it has advanced algebra and numerical analysis, probability and statistics, random process such as calculation of discipline knowledge; requires students to acquire basic knowledge and a solid theoretical basis. Is closely related with other subjects, namely, and communication theory, computers, microelectronics can not be separated, but also in artificial intelligence, pattern recognition, neural network theory one of the emerging discipline. The digital filter design method is based on MATLAB for digital filter design. The main elements of design: IIR and FIR digital filter design of digital filter
Key Words: IIR, FIR, low pass, high pass, band stop, band pass
目錄
一、 前言 3
二、 課程設計的目的 3
三、 數字信號處理課程設計說明及要求 3
四、 濾波器的設計原理 4
4.1 數字濾波器簡介 4
4.2 IIR濾波器的設計原理 4
4.3 FIR濾波器的設計原理 5
4.4 FIR濾波器的窗函數設計法 6
五、 設計內容 6
5.1 設計題目: 6
5.2設計程序代碼及結果: 7
六、 結束語 15
七、 參考文獻 16
一、 前言
數字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學科而又廣泛應用於許多領域的新興學科。
隨著信息時代和數字世界的到來,數字信號處理已成為今一門極其重要的學科和技術領域。數字信號處理在通信語音、圖像、自動控制、雷達、軍事、航空航天、醫療和家用電器等眾多領域得到了廣泛的應用。在數字信號處理應用中,數字濾波器十分重要並已獲得廣泛應用。
二、 課程設計的目的
1)
三、 數字信號處理課程設計說明及要求
所需硬體:PC機
四、 濾波器的設計原理
4.1 數字濾波器簡介
數字濾波器是一種用來過濾時間離散信號的數字系統,通過對抽樣數據進行數學處理來達到頻域濾波的目的。可以設計系統的頻率響應,讓它滿足一定的要求,從而對通過該系統的信號的某些特定的頻率成分進行過濾,這就是濾波器的基本原理。如果系統是一個連續系統,則濾波器稱為模擬濾波器。如果系統是一個離散系統,則濾波器稱為數字濾波器。
信號 通過線性系統後,其輸出 就是輸入信號 和系統沖激響應 的卷積。除了 外, 的波形將不同於輸入波形 。從頻域分析來看,信號通過線性系統後,輸出信號的頻譜將是輸入信號的頻譜與系統傳遞函數的乘積。除非 為常數,否則輸出信號的頻譜將不同於輸入信號的頻譜,某些頻率成分 較大的模,因此, 中這些頻率成分將得到加強,而另外一些頻率成分 的模很小甚至為零, 中這部分頻率分量將被削弱或消失。因此,系統的作用相當於對輸入信號的頻譜進行加權。
4.2 IIR濾波器的設計原理
IIR數字濾波器的設計一般是利用目前已經很成熟的模擬濾波器的設計方法來進行設計,通常採用模擬濾波器原型有butterworth函數、chebyshev函數、bessel函數、橢圓濾波器函數等。
IIR數字濾波器的設計步驟:
(1) 按照一定規則把給定的濾波器技術指標轉換為模擬低通濾波器的技術指標;
(2) 根據模擬濾波器技術指標設計為響應的模擬低通濾波器;
(3) 很據脈沖響應不變法和雙線性不變法把模擬濾波器轉換為數字濾波器;
(4) 如果要設計的濾波器是高通、帶通或帶阻濾波器,則首先把它們的技術指標轉化為模擬低通濾波器的技術指標,設計為數字低通濾波器,最後通過頻率轉換的方法來得到所要的濾波器。
4.3 FIR濾波器的設計原理
FIR濾波器通常採用窗函數方法來設計。窗設計的基本思想是,首先選擇一個適當的理想選頻濾波器(它總是具有一個非因果,無限持續時間脈沖響應),然後街區(加窗)它的脈沖響應得到線性相位和因果FIR濾波器。我們用Hd(e^jw)表示理想的選頻濾波器,它在通帶上具有單位增益和線性相位,在阻帶上具有零響應。一個帶寬wc<pi的低通濾波器由下式給定:
為了從hd(n)得到一個FIR濾波器,必須同時在兩邊截取hd(n)。而要得到一個因果的線性相位濾波器,它的h(n)長度為N,必須有:
這種操作叫做加窗,h(n)可以看做是hd(n)與窗函數w(n)的乘積:
h(n)=hd(n)w(n)
其中
根據w(n)的不同定義,可以得到不同的窗結構。
在頻域中,因果FIR濾波器響應H(e^jw)由Hd(e^jw)和窗響應W(e^jw)的周期卷積得到,即
常用的窗函數有矩形窗、巴特利特(BARTLETT)窗、漢寧(HANNING)窗、海明(HAMMING)窗、布萊克曼(BLACKMAN)窗、凱澤(KAISER)窗等。
4.4 FIR濾波器的窗函數設計法
FIR濾波器的設計方法有許多種,如窗函數設計法、頻率采樣設計法和最優化設計法等。窗函數設計法的基本原理是用一定寬度窗函數截取無限脈沖響應序列獲得有限長的脈沖響應序列,主要設計步驟為:
(1) 通過傅里葉逆變換獲得理想濾波器的單位脈沖響應hd(n)。
(2) 由性能指標確定窗函數W(n)和窗口長度N。
(3) 求得實際濾波器的單位脈沖響應h(n), h(n)即為所設計FIR濾波器系數向量b(n)。
五、 設計內容
5.1 設計題目:
1-1.試用MATLAB設計一巴特沃斯低通數字濾波器,要求通帶截至頻率Wp=30HZ,主帶截至頻率為Ws=35HZ,通帶衰減不大於0.5DB,主帶衰減不小於40DB,抽樣頻Fs=100HZ。
1-2.基於Butterworth模擬濾波器原型,使用雙線性狀換設計數字濾波器:各參數值為:通帶截止頻率Omega=0.2*pi,阻帶截止頻率Omega=0.3*pi,通帶波動值Rp=1dB,阻帶波動值Rs=15dB,設Fs=20000Hz。
1-3設計一巴特沃斯高通數字濾波器,要求通帶截止頻率0.6*pi,通帶衰減不大於1dB,阻帶衰減15DB,抽樣T=1。
1-4.設計一巴特沃斯帶阻數字濾波器,要求通帶上下截至頻率為0.8*PI、0.2*PI,通帶衰減不大於1DB,阻帶上下截至頻率0.7*PI、0.4*PI 阻帶衰減不小於30DB,
2-1.用窗函數法設計一個線性相位FIR低通濾波器,並滿足性能指標:通帶邊界頻率
Wp=0.5*pi,阻帶邊界頻率Ws=0.66*pi,阻帶衰減不小於40dB,通帶波紋不大於3dB。選擇漢寧窗。
2-4.用海明窗設計一個FIR濾波器,其中Wp=0.2*pi,Ws=0.3*pi,通帶衰減不大於0.25dB,阻帶衰減不小於50dB。
5.2設計程序代碼及結果:
1-1一.試用MATLAB設計一巴特沃斯低通數字濾波器,要求通帶截至頻率Wp=30HZ,阻帶截至頻率為Ws=35HZ,通帶衰減不大於0.5DB,阻帶衰減不小於40DB,抽樣頻Fs=100HZ。
代碼為:
fp = 30;
fs = 35;
Fs = 100;
wp = 2*pi*fp/Fs;
ws = 2*pi*fs/Fs;
wp = tan(wp/2);
ws = tan(ws/2); % 通帶最大衰減為0.5dB,阻帶最小衰減為40dB
[N, wn] = buttord(wp, ws, 0.5, 40, 's'); % 模擬低通濾波器極零點
[z, p, k] = buttap(N); % 由極零點獲得轉移函數參數
[b, a] = zp2tf(z, p, k); % 由原型濾波器獲得實際低通濾波器
[B, A] = lp2lp(b, a, wp);
[bz, az] = bilinear(B, A, .5);
[h, w] = freqz(bz, az, 256, Fs);
figure
plot(w, abs(h))
grid on
圖1 巴特沃斯數字低通濾波器
1-2基於Butterworth模擬濾波器原型,使用雙線性狀換設計數字濾波器:各參數值為:通帶截止頻率Omega=0.2*pi,阻帶截止頻率Omega=0.3*pi,通帶波動值Rp=1dB,阻帶波動值Rs=15dB,設Fs=4000Hz。
代碼:
wp=0.2*pi;ws=0.3*pi;
Fs=4000;T=1/Fs;
OmegaP=(2/T)*tan(wp/2);
OmegaS=(2/T)*tan(ws/2);
rp=1;rs=15;as=15;
ripple=10^(-rp/20);attn=10^(-rs/20);
[n,wn]=buttord(OmegaP,OmegaS,rp,rs,'s');
[z,p,k]=Buttap(n);
[b,a]=zp2tf(z,p,k);
[bt,at]=lp2lp(b,a,wn);
[b,a]=bilinear(bt,at,Fs);
[db,mag,pha,grd,w]=freqz_m(b,a);
%
%下面繪出各條曲線
subplot(2,2,1);plot(w/pi,mag);title('Magnitude Frequency幅頻特性');
xlabel('w(/pi)');ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 1]);
set(gca,'YTickMode','manual','YTick',[0 attn ripple 1]);grid
subplot(2,2,2);plot(w/pi,db);title('Magnitude Frequency幅頻特性(db)');
xlabel('w(/pi)');ylabel('dB');
axis([0,1,-30,5]);
set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 1]);
set(gca,'YTickMode','manual','YTick',[-60 -as -rp 0]);grid
subplot(2,2,3);plot(w/pi,pha/pi);title('Phase Frequency相頻特性');
xlabel('w(/pi)');ylabel('pha(/pi)');
axis([0,1,-1,1]);
subplot(2,2,4);plot(w/pi,grd);title('Group Delay群延時');
xlabel('w(/pi)');ylabel('Sample');
axis([0,1,0,15]);
set(gca,'XTickMode','manual','XTick',[0 0.2 0.3 1]);grid
運行結果:
圖2巴特沃思數字低通濾波器幅頻-相頻特性
1-3設計一巴特沃斯高通數字濾波器,要求通帶截止頻率0.6*pi,通帶衰減不大於1dB,阻帶衰減15DB,抽樣T=1。
Wp=0.6*pi;
Ws=0.4*pi;
Ap=1;
As=15;
[N,wn]=buttord(Wp/pi,Ws/pi,Ap,As); %計算巴特沃斯濾波器階次和截止頻率
%頻率變換法設計巴特沃斯高通濾波器
[db,mag,pha,grd,w]=freqz_m(b,a); %數字濾波器響應
plot(w,mag);
title('數字濾波器幅頻響應|H(ej\Omega)|')
圖3巴特沃斯數字高通濾波器
2-1用窗函數法設計一個線性相位FIR低通濾波器,並滿足性能指標:通帶邊界頻率
Wp=0.5*pi,阻帶邊界頻率Ws=0.66*pi,阻帶衰減不小於40dB,通帶波紋不大於3dB。選擇漢寧窗。
代碼:
wp =0.5*pi;
ws=0.66*pi;
wdelta =ws-wp;
N= ceil(8*pi/wdelta)
if rem(N,2)==0
N=N+1;
end
);
運行結果:
給分就給你個全的!
圖6低通FIR濾波器
六、 結束語
本次數字濾波器設計方法是基於MATLAB的數字濾波器的設計,是用學過的數字信號理論為依據,用MATLAB代碼來實現。課程設計過程中,通過IIR數字濾波器和FIR數字濾波器的設計實例,說明如何利用MATLAB來完成數字濾波器的設計。窗函數法中相位響應有嚴格的線性,不存在穩定性問題, 設計簡單。雙線性變換不會出現由於高頻部分超過折疊頻率而混淆到低頻部分去的現象,但會產生頻率混碟現象,使數字濾波器的頻響偏移模擬濾波器的頻響。由濾波器的頻譜圖和濾波前後的語音信號的頻譜圖對比可知本設計選用雙線性變換法設計的IIR濾波器比較好。在同樣的技術指標的要求下,IIR濾波器所要求的階數N也比較小,實現起來比較容易。
通過綜合運用數字信號處理的理論知識進行濾波器設計,通過理論推導得出相應結論,再利用 MATLAB 作為編程工具進行計算機實現,從而加深了對所學知識的理解,建立概念。對以前在課本上所學的東西有了更深入的理解和掌握。最後,無論做什麼課程設計,都需要要有一定的理論知識作為基礎,同時通過這次課程設計,我對於以前所學的數字信號處理知識有了更深的理解。
七、 參考文獻
1. 程佩青《數字信號處理教程》北京清華大學出版社2007年2月.
2. 趙知勁、劉順蘭《數字信號處理實驗》.浙江大學出版社.
3. S.K.Mitra.Digital Signal Processing:A Computer-Based Approach.
NewYork,NewYork:McGraw-Hill,thirded,2006.
4. 肖偉、劉忠等《 MATLAB程序設計與應用》清華大學出版社、北京交通大學出版社.
5. 胡良劍、孫曉君 《 MATLAB數學實驗》.高等教育出版社.
⑵ 怎樣設計一個帶通濾波器
帶通濾波器,基本參數;中心頻率,帶寬(你這里是不是寫錯了啊),帶外衰減特性,這樣才知道需要構成幾階電路。
⑶ 低通濾波器的設計和計算
低通濾波器設計原理是:容許低於截止頻率的信號通過, 但高於截止頻率的信號不能通過。
低通濾波器概念有許多不同的形式,包括電子線路(如音頻設備中使用的hiss 濾波器)、平滑數據的數字演算法、音障、圖像模糊處理等等,這兩個工具都通過剔除短期波動、保留長期發展趨勢提供了信號的平滑形式。它信號處理中的作用等同於其它領域如金融領域中移動平均數所起的作用。
計算:低通濾波器允許從直流到某個截止頻率的信號通過。將通用濾波器二階傳遞函數的高通和帶通系數均設為零,即得到一個二階低通濾波器傳遞公式:對於高於f0的頻率,信號按該頻率平方的速率下降。在頻率f0處,阻尼值使輸出信號衰減。
假定設計要求一個截止頻率為10kHz的四階貝塞爾(Bessel) 低通濾波器。每部分的轉降頻率分別為16.13及18.19 kHz,阻尼值分別為1.775及0.821,並且這兩個濾波器分區的高通、帶通和低通系數分別為0、0與1。
(3)濾波器設計擴展閱讀:
低通濾波器應用實例:
1、一個固體屏障就是一個聲波的低通濾波器。當另外一個房間中播放音樂時,很容易聽到音樂的低音,但是高音部分大部分被過濾掉了。
2、電子低通濾波器用來驅動重低音喇叭(subwoofer)和其它類型的擴音器、並且阻塞它們不能有效傳播的高音節拍。
3、無線電發射機使用低通濾波器阻塞可能引起與其它通信發生干擾的諧波發射。
4、DSL分離器使用低通和高通濾波器分離共享使用雙絞線的DSL和POTS信號。
5、低通濾波器也在如Roland公司這樣的模擬合成器(synthesiser)合成的電子音樂聲音處理中發揮著重要的作用。
⑷ 用matlab設計一個濾波器
你自己整合吧,我沒時間幫你整合,我給你提供一些程序:
絕對正確的代碼:程序1:
fs=22050; %語音信號采樣頻率為22050
x1=wavread('Windows Critical Stop.wav'); %讀取語音信號的數據,賦給變數x1
sound(x1,22050); %播放語音信號
y1=fft(x1,1024); %對信號做1024點FFT變換
f=fs*(0:511)/1024;
figure(1)
plot(x1) %做原始語音信號的時域圖形
title('原始語音信號');
xlabel('time n');
ylabel('fu n');
figure(2)
freqz(x1) %繪制原始語音信號的頻率響應圖
title('頻率響應圖')
figure(3)
subplot(2,1,1);
plot(abs(y1(1:512))) %做原始語音信號的FFT頻譜圖
title('原始語音信號FFT頻譜')
subplot(2,1,2);
plot(f,abs(y1(1:512)));
title('原始語音信號頻譜')
xlabel('Hz');
ylabel('fu');
程序2:
fs=22050; %語音信號采樣頻率為22050
x1=wavread('Windows Critical Stop.wav'); %讀取語音信號的數據,賦給變數x1
t=0:1/22050:(size(x1)-1)/22050;
y1=fft(x1,1024); %對信號做1024點FFT變換
f=fs*(0:511)/1024;
x2=randn(1,length(x1)); %產生一與x長度一致的隨機信號
sound(x2,22050);
figure(1)
plot(x2) %做原始語音信號的時域圖形
title('高斯隨機雜訊');
xlabel('time n');
ylabel('fu n');
randn('state',0);
m=randn(size(x1));
x2=0.1*m+x1;
sound(x2,22050);%播放加雜訊後的語音信號
y2=fft(x2,1024);
figure(2)
plot(t,x2)
title('加噪後的語音信號');
xlabel('time n');
ylabel('fu n');
figure(3)
subplot(2,1,1);
plot(f,abs(y2(1:512)));
title('原始語音信號頻譜');
xlabel('Hz');
ylabel('fu');
subplot(2,1,2);
plot(f,abs(y2(1:512)));
title('加噪後的語音信號頻譜');
xlabel('Hz');
ylabel('fu');
根據以上代碼,你可以修改下面有錯誤的代碼
程序3:雙線性變換法設計Butterworth濾波器
fs=22050;
x1=wavread('h:\課程設計2\shuzi.wav');
t=0:1/22050:(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
Rp=1;
Rs=15;
Fs=22050;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2); %將模擬指標轉換成數字指標
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s'); %選擇濾波器的最小階數
[Z,P,K]=buttap(N); %創建butterworth模擬濾波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs); %用雙線性變換法實現模擬濾波器到數字濾波器的轉換
[H,W]=freqz(bz,az); %繪制頻率響應曲線
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid
xlabel('頻率/Hz')
ylabel('頻率響應幅度')
title('Butterworth')
f1=filter(bz,az,x2);
figure(2)
subplot(2,1,1)
plot(t,x2) %畫出濾波前的時域圖
title('濾波前的時域波形');
subplot(2,1,2)
plot(t,f1); %畫出濾波後的時域圖
title('濾波後的時域波形');
sound(f1,22050); %播放濾波後的信號
F0=fft(f1,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512))); %畫出濾波前的頻譜圖
title('濾波前的頻譜')
xlabel('Hz');
ylabel('fu');
subplot(2,1,2)
F1=plot(f,abs(F0(1:512))); %畫出濾波後的頻譜圖
title('濾波後的頻譜')
xlabel('Hz');
ylabel('fu');
程序4:窗函數法設計濾波器:
fs=22050;
x1=wavread('h:\課程設計2\shuzi.wav');
t=0:1/22050:(size(x1)-1)/22050;
Au=0.03;
d=[Au*cos(2*pi*5000*t)]';
x2=x1+d;
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta); %取整
wn=(0.2+0.3)*pi/2;
b=fir1(N,wn/pi,hamming(N+1)); %選擇窗函數,並歸一化截止頻率
figure(1)
freqz(b,1,512)
f2=filter(bz,az,x2)
figure(2)
subplot(2,1,1)
plot(t,x2)
title('濾波前的時域波形');
subplot(2,1,2)
plot(t,f2);
title('濾波後的時域波形');
sound(f2,22050); %播放濾波後的語音信號
F0=fft(f2,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x2,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512)));
title('濾波前的頻譜')
xlabel('Hz');
ylabel('fu');
subplot(2,1,2)
F2=plot(f,abs(F0(1:512)));
title('濾波後的頻譜')
xlabel('Hz');
ylabel('fu');
⑸ lc濾波器設計與製作
整流後的LC濾波器應該用鐵心電感,按電感量0.8H計算,得用10CM寬12CM厚的口字型鐵心,得用1毫米的銅線5根並繞500匝,鐵心之間留氣隙0.2毫米.
電感量要求遠大於負載電阻/942
按你的情況0.8-1H為好.
⑹ 低通濾波器的設計和計算是什麼
以最簡單的一階RC低通濾波器為例A(s)=1/(s/ω0 +1)
ω0=1/RC
f0= ω0/2π
在f0處,濾波器的輸出為輸入的-3db,也就是輸入的0.707倍。
在網路文庫網路一下,有許多相關資料。
⑺ 濾波器怎麼設計
你的定義描述有問題:
濾波器的時域函數sinc在輸出信號中沒有體現。
應該說,若版濾波器對系統脈沖的響應權是h(t)
那麼,輸出是x(t)和h(t)的卷積。
因此,設計濾波器,需要用濾波器的系統脈沖響應h(t)表示。
至於你提的問題,如何將x(t)變為x(t-T),實際上只需要將變數替換就可以了。
例如:x(t)=sin(ωt),那麼,x(t-T)=sin(ω(t-T))
低通濾波器如何設計,要求不同,濾波器設計自然也不同,拋開要求談設計,沒有實際意義。可先參考文庫相關資料,學習相關基礎知識。