天天看點

數字信号處理之低通濾波器設計

目錄

1 數字濾波器的概念

2 數字濾波器分類

    2.1 經典濾波器與現代濾波器

    2.2 無限脈沖響應濾波器和有限長脈沖響應濾波器

    2.3 選頻濾波器和其他濾波器

3 濾波器的用途

4 數字濾波器的技術名額

5 數字濾波器設計方法

6 模拟濾波器的設計

    6.1 常見的模拟濾波器

    6.2 模拟低通濾波器的設計名額及逼近方法

7 巴特沃斯低通濾波器設計

8 設計巴特沃斯濾波器相關的matlab工具箱函數

9 基于Matlab的語音信号濾波器的設計與實作

    9.1 原始語音信号的頻譜

    9.2 添加高頻餘弦噪聲

    9.3 巴特沃斯低通濾波器設計

    9.4 利用巴特沃斯低通濾波器對含躁語音信号濾波

1、數字濾波器的概念

數字信号處理之低通濾波器設計

2、數字濾波器分類

2.1 經典濾波器與現代濾波器

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

2.2 無限脈沖響應濾波器和有限長脈沖響應濾波器

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

2.3 選頻濾波器和其他濾波器

數字信号處理之低通濾波器設計

3、濾波器的用途

數字信号處理之低通濾波器設計

4、數字濾波器的技術名額

數字信号處理之低通濾波器設計

5、數字濾波器設計方法

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

6、模拟濾波器的設計

6.1 常見的模拟濾波器

數字信号處理之低通濾波器設計

6.2 模拟低通濾波器的設計名額及逼近方法

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

7、巴特沃斯低通濾波器設計

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

8、設計巴特沃斯濾波器相關的matlab工具箱函數

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

9、基于Matlab的語音信号濾波器的設計與實作

9.1 原始語音信号的頻譜 

1 clc;
 2 clear;
 3 close all;
 4   
 5 [x1,fs,bits]=wavread(\'qq.wav\'); %讀取語音信号的資料,賦給變量x1
 6 L=length(x1);
 7 sound(x1,fs); %播放語音信号
 8 
 9 N=L;
10 k=[0:N-1];
11 y1=fft(x1,N);  %對信号做L個點FFT變換
12 figure(1);
13 subplot(2,1,1);
14 plot(k(1:20000),abs(y1(1:20000))); %做原始語音信号的FFT頻譜圖
15 title(\'原始語音信号FFT頻譜\');
16   
17 f=fs*(0:N-1)/N;
18 subplot(2,1,2);
19 plot(f(1:20000),abs(y1(1:20000)));
20 title(\'原始語音信号頻譜\');
21 xlabel(\'f Hz\');ylabel(\'fuzhi\');      

     說明:程式第17行的解釋見“四、DFT的周期性”公式四。 

數字信号處理之低通濾波器設計

    說明:上圖是FFT變換的頻譜圖(數字頻率k),下圖是轉換成模拟頻率下的頻譜圖。

9.2 添加高頻餘弦噪聲 

1 %給原始的語音信号加上一個高頻餘弦噪聲,頻率為5kHz。畫出加噪後的語音信号時域和頻譜圖,與原始信号對比,可以很明顯的看出差別。
 2 t=[0:1/fs:(L-1)/fs];        %将所加噪聲信号的點數調整到與原始信号相同,構造采樣時間點(模拟時間)
 3 Au=0.03;                    %噪聲幅度
 4 d=[Au*cos(2*pi*8000*t)]\';   %噪聲為8kHz(2*pi*8000/(2*pi))的餘弦信号(模拟時間)
 5 x2=x1+d;
 6 
 7 figure(2);
 8 subplot(2,1,1);
 9 plot(x1);        %做原始語音信号的時域圖形
10 title(\'原始語音信号\');xlabel(\'time n\');ylabel(\'fuzhi\');
11 
12 sound(x2,fs);    %播放加噪聲後的語音信号
13 subplot(2,1,2);
14 plot(x2);        %做原始語音信号的時域圖形
15 title(\'加噪後的信号\');xlabel(\'time n\');ylabel(\'fuzhi\');
16 
17 y2=fft(x2,N);     %對信号做L個點FFT變換
18 figure(3);
19 subplot(2,1,1);
20 plot(k(1:20000),abs(y2(1:20000))); %做原始語音信号的FFT頻譜圖
21 title(\'加躁語音信号FFT頻譜\');
22   
23 subplot(2,1,2);
24 plot(f(1:20000),abs(y2(1:20000)));
25 title(\'加躁語音信号頻譜\');
26 xlabel(\'f Hz\');ylabel(\'fuzhi\');      

     說明:程式前5行是構造高頻雜波信号,高頻噪聲信号也是按照fs為采樣頻率的,而且采樣點數也是L(與原始信号等長)。

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

    說明:通過頻譜圖就可以看到所加噪聲信号是8Khz。

9.3 巴特沃斯低通濾波器設計 

1 wp=2*pi*4000;                       %通帶邊界角頻率
 2 ws=2*pi*5000;                       %阻帶邊界角頻率
 3 Rp=1;                               %通帶最大衰減
 4 Rs=15;                              %阻帶最小衰減
 5 [NN,Wn]=buttord(wp,ws,Rp,Rs,\'s\');   %選擇濾波器的最小階數
 6 [Z,P,K]=buttap(NN);                 %建立butterworth模拟濾波器
 7 [Bap,Aap]=zp2tf(Z,P,K);
 8 [b,a]=lp2lp(Bap,Aap,Wn);   
 9 [bz,az]=bilinear(b,a,fs);          %用雙線性變換法實作模拟濾波器到數字濾波器的轉換
10 
11 [H,W]=freqz(bz,az);                %繪制頻率響應曲線
12 figure(4);
13 plot(W*fs/(2*pi),abs(H));
14 grid;
15 xlabel(\'頻率/Hz\');
16 ylabel(\'頻率響應幅度\');
17 title(\'Butterworth\');      

 說明:

(1)前4行是設定波特沃斯濾波器的名額

(2)第5行是根據前4行的參數計算濾波器的階數NN和3db截止頻率Wn。

(3)第6行根據階數NN計算巴特沃斯歸一化模拟低通原型濾波器系統函數的零、極點和增益因子。

(4)第9行将模拟濾波器轉換到數字濾波器,而bz、az分别是分子和分母的系數。

    到此,有了bz、az,濾波器就構造出來了。

(5)第11行計算濾波器的頻率響應,freqz函數的使用見freqz()--matlab函數。

(6)第13行的f(模拟頻率)=W*fs/(2*pi)解釋見“2.2.2采樣後的離散傅裡葉頻譜”。 

數字信号處理之低通濾波器設計

    說明:可以看到巴特沃斯濾波器的特性是與之前設定的參數比對的。

9.4 利用巴特沃斯低通濾波器對含躁語音信号濾波

x3=filter(bz,az,x2);
figure(5);
subplot(2,1,1);
plot(t,x2);               %畫出濾波前的時域圖
title(\'濾波前的時域波形\');
subplot(2,1,2);
plot(t,x3);               %畫出濾波後的時域圖
title(\'濾波後的時域波形\');
sound(x3,fs);        %播放濾波後的信号

y2=fft(x2,N);  %對信号做L個點FFT變換
figure(6);  
subplot(2,1,1);
plot(f(1:20000),abs(y2(1:20000)));
title(\'加躁語音信号頻譜\');
xlabel(\'f Hz\');ylabel(\'fuzhi\');

y2=fft(x3,N);  %對信号做L個點FFT變換
subplot(2,1,2);
plot(f(1:20000),abs(y2(1:20000)));
title(\'去噪語音信号頻譜\');
xlabel(\'f Hz\');ylabel(\'fuzhi\');      

    說明:程式的第一行“x3=filter(bz,az,x2);”就是調用上邊構造的巴特沃斯低通濾波器對含躁信号x2濾波,其實就是數值運算。

數字信号處理之低通濾波器設計
數字信号處理之低通濾波器設計

    說明:通過對比可以看到,8Khz的高頻噪聲确實是被濾掉了。 

附:C調音符與頻率對照表

數字信号處理之低通濾波器設計

參考:基于Matlab的語音信号濾波器的設計與實作

      西電《數字信号處理》第三版

      freqz()--matlab函數