《IIR數(shù)字濾波器的設計及軟件實現(xiàn)》由會員分享,可在線閱讀,更多相關《IIR數(shù)字濾波器的設計及軟件實現(xiàn)(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、IIR數(shù)字濾波器的設計及軟件實現(xiàn)
1. 實驗目的
(1) 熟悉用雙線性變換法設計IIR數(shù)字濾波器的原理與方法;
(2) 學會用MATLAB信號處理工具箱中的濾波器設計函數(shù)(或濾波器設計分析工具FDAtool)設計各種濾波器,學會根據(jù)濾波需求確定濾波器指標參數(shù);
(3) 掌握IIR數(shù)字濾波器的MATLAB實現(xiàn)方法;
(4) 通過觀察濾波器輸入、輸出信號的時域波形及其頻譜,建立數(shù)字濾波的概念。
2. 實驗原理
設計IIR數(shù)字濾波器一般采用間接法(脈沖響應不變法和雙線性不變法),應用最廣泛的是雙線性變換法?;镜脑O計過程是:
?將給定的數(shù)字濾波器指標轉換成模擬濾波器的指標;
?涉及
2、模擬濾波器;
?將模擬濾波器的系統(tǒng)函數(shù)轉換成數(shù)字濾波器的系統(tǒng)函數(shù)。
MATLAB信號處理工具箱中的各種IIR數(shù)字濾波器設計函數(shù)都是采用雙線性變換法。本實驗的數(shù)字濾波器的MATLAB實驗是調用MATLAB信號處理工具箱的函數(shù)filter對給定的輸入信號x(n)進行濾波,得到濾波后的輸出信號y(n).
3. 實驗內容及步驟
1. 信號處產生函數(shù)mstg產生由三路抑制載波調幅信號相加構成的復合信號st,該函數(shù)還會自動回圖顯示st的時域波形和幅頻特性曲線,由后圖可見,三路信號時域混疊無法在時域分離。但頻域是分離的,所以可通過濾波的方法在頻域分離。
2. 將st中三路調幅信號分離,通過觀察st
3、的幅頻特性曲線,分別確定可以分離st中三路抑制載波單頻調幅信號的三個濾波器(低通濾波器、帶通濾波器、高通濾波器)的通帶截止頻率和阻帶截止頻率。且濾波器的通帶最大衰減為0.1dB,阻帶最小衰減為60bB。
提示:抑制載波單頻調幅信號的數(shù)學表示式為
+
其中,稱為載波,為載波頻率,稱為單頻調制信號,為調制正弦波信號頻率,且滿足>。由上式可見,所謂抑制載波單頻調幅信號,就是2個正弦信號相乘,它有2個頻率成分:和頻+和差頻-,這2個頻率成分關于載波頻率對稱。所以,1路抑制載波單頻調幅信號的頻譜圖是關于載波頻率對稱的2根譜線,其中沒有載頻成分,故取名為抑制載波單頻調幅信號。圖中三路調幅信號的載波頻
4、率分別為250Hz、500Hz、1000Hz。
3. 編程調用MATLAB濾波器涉及函數(shù)ellipord和ellip分別設計這三個橢圓濾波器,并繪圖顯示其損耗函數(shù)曲線;
4. 調用濾波器實驗函數(shù)filter,用三個濾波器分別對信號產生函數(shù)mstg產生的信號st進行濾波,分離出st中的三路不同載波頻率的調幅信號y1(n)、y2(n)、y3(n)。
濾波器參數(shù)的選?。?
l 對于載波頻率為250Hz的條幅信號,可以選用低通濾波器分離,其指標為:
通帶截止頻率,通帶最大衰減;
阻帶截止頻率,阻帶最小衰減;
l 對于載波頻率為500Hz的條幅信號,可以選用帶通濾波器分離,其指標為:
通帶
5、截止頻率,,通帶最大衰減;
阻帶截止頻率,,阻帶最小衰減;
l 對于載波頻率為1000Hz的條幅信號,可以選用高通濾波器分離,其指標為:
通帶截止頻率,通帶最大衰減;
阻帶截止頻率,阻帶最小衰減;
說明:
(1)為了使濾波器階數(shù)盡可能低,每個濾波器的邊界頻率選擇原則是盡可能使濾波器過渡帶寬盡可能寬;
(2) 與信號產生函數(shù)mstg相同采用頻率Fs=10kHz;
(3) 為了濾波器階數(shù)最低,選用橢圓濾波器。
4. 試驗程序框圖
調用函數(shù)mstg產生st,自動繪圖顯示st的時域波形和幅頻特性曲線
調用ellipord和ellip分別設計三個橢圓濾波器,并繪圖顯示其幅頻響應
6、特性曲線
調用filter,用三個濾波器分別對信號st進行濾波,分離出三路不同載波頻率的調幅信號y1(n),y2(n),和y3(n)
繪圖顯示y1(n),y2(n)和y3(n)的時域波形
結束
5. 思考題及簡答
1、 閱讀信號產生函數(shù)mstg,確定三路調幅信號的載波頻率和調制信號頻率
答:
第一路調幅信號的載波頻率fc1=1000Hz;
第一路調幅信號的調制頻率fm1=100Hz;
第二路調幅信號的載波頻率fc2=500Hz;
第二路調幅信號的調制頻率fm2=50Hz;
第三路調幅信號的載波頻率fc3=250
7、Hz;
第三路調幅信號的調制頻率fm3=25Hz;
2、 信號產生函數(shù)mstg中采樣點數(shù)N=1600,對st進行N點FFT就可以得到6根理想譜線。如果取N=1800,可否得到6根理想譜線?為什么?N=2000呢?請改變采樣點數(shù)N的值,觀察頻譜圖驗證判斷是否正確?
答:因為信號st是周期序列,譜分析時要求觀察時間為整數(shù)倍周期。分析可知,st的每個頻率成分都是25Hz的整數(shù)倍。采樣頻率Fs=10kHz=25400Hz,即在25Hz的正弦波的1個周期中采樣400點。所以,當N為400的整數(shù)倍時一定為st的整數(shù)個周期。因此,采樣點數(shù)N=1600和N=2000時,對st進行N點FFT可以得到6根理
8、想譜線。如果取N=1800,不是400的整數(shù)倍,不能得到6根理想譜線。
(1) N=1600時:
(2) N=1800時:
(3) N=2000S時:
3、 修改信號產生函數(shù)mstg,給每路調幅信號加入載波成分,產生調幅(AM)信號,重復本實驗,觀察AM信號與抑制載波調幅信號的時域波形及其頻譜的差別。
AM信號表示式:
取值: ,,結果見(附錄Ⅰ)
6. 實驗結果(程序附錄Ⅱ)
原信號輸出:
低通輸出:
帶通輸出:
高通輸出:
附錄(Ⅰ):
原信號輸出:
低通輸出:
帶通輸出:
高通輸出:
附
9、錄(Ⅱ):
%主函數(shù)
%IIR數(shù)字濾波器設計及軟件實現(xiàn)
clear all;
%調用信號產生函數(shù)mstg產生又三路抑制載波調幅信號相加構成的復合信號
syms st;
syms t;
st=mstg; %低通濾波器設計與實現(xiàn)
Fs=10000;T=1/Fs;
n=800;Tp=n*T;k=0:n-1;f=k/Tp;
fp=280;fs=450;
wp=2*fp/Fs;ws=2*fs/Fs;
rp=0.1;rs=60; %DF指標;(低通濾波器的通阻帶邊界頻率)
[N,wp0]=ellipord(wp,ws,rp,rs);%調用ellipod計算橢圓DF階數(shù)N和
10、通帶截止頻率wp
[B,A]=ellip(N,rp,rs,wp0);%調用ellip計算橢圓帶通DF系統(tǒng)函數(shù)系數(shù)向量B和A
y1t=filter(B,A,st);%濾波器的軟件實現(xiàn)
fyt=fft(y1t,n);
%下面為繪圖部分
figure(2);
subplot(3,1,1);
myplot(B,A);
yt=y_1(t);
subplot(3,1,2);
tplot(y1t,T,yt);
subplot(3,1,3);
stem(f,abs(fyt)/max(abs(fyt)),.);
grid;
title((c) s(t)的頻譜);
axis([0,F
11、s/5,0,1.2]);
xlabel(f/Hz);ylabel(幅度);
%帶通濾波器的實現(xiàn)與設計
fpl=440;fpu=560;fsl=275;fsu=900;
wp=[2*fpl/Fs,2*fpu/Fs];
ws=[2*fsl/Fs,2*fsu/Fs];
rp=0.1;rs=60;
[N,wp0]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wp0);
y2t=filter(B,A,st);
fyt=fft(y2t,n);
figure(3);
subplot(3,1,1);
myplot(B,A);
yt=y_
12、1(t);
subplot(3,1,2);
tplot(y1t,T,yt);
subplot(3,1,3);
stem(f,abs(fyt)/max(abs(fyt)),.);
grid;
title((c) s(t)的頻譜);
axis([0,Fs/5,0,1.2]);
xlabel(f/Hz);ylabel(幅度);
%高通濾波器的實現(xiàn)與設計
fp=890;fs=600;
wp=2*fp/Fs;ws=2*fs/Fs;
rp=0.1;rs=60;
[N,wp0]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wp0,hi
13、gh);
y3t=filter(B,A,st);
fyt=fft(y3t,n);
figure(4);
subplot(3,1,1);
myplot(B,A);
yt=y_1(t);
subplot(3,1,2);
tplot(y1t,T,yt);
subplot(3,1,3);
stem(f,abs(fyt)/max(abs(fyt)),.);
grid;
title((c) s(t)的頻譜);
axis([0,Fs/5,0,1.2]);
xlabel(f/Hz);ylabel(幅度);
clc;clear
%子程序
%產生信號程序
function
14、st=mstg
N=800
FS=10000;T=1/FS;TP=N*T;
t=0:T:(N-1)*T;K=0:N-1;
f=K/TP;
fc1=FS/10;%第一路調幅信號的載波頻率fc1=1000HZ
fm1=fc1/10;%第一路調幅信號的調制信號頻率為fm1=100hz.
fc2=FS/20;%第二路調幅信號的載波頻率fc2=500HZ
fm2=fc2/10;%第二路調幅信號的調制信號頻率為fm2=50hz.
fc3=FS/40;%第三路調幅信號的載波頻率fc3=250HZ
fm3=fc3/10;%第三路調幅信號的調制信號頻率為fm3=25hz.
xt1=cos(
15、2*pi*fm1*t).*cos(2*pi*fc1*t);
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);
st=xt1+xt2+xt3;
fxt=fft(st,N);%計算信號st的頻譜.%繪圖
subplot(2,1,1)
plot(t,st);
grid on;
xlabel(t/s);ylabel(s(t));
axis([0,TP/8,min(st),max(st)]);
title((a)s(t)的波形)
subplot(2,1,2)
stem(f,abs
16、(fxt)/max(abs(fxt)),.);
grid on;title((b) s(t)的頻譜)
axis([0,FS/5,0,1.2]);
xlabel(f/HZ);ylabel(幅度);
%損耗輸出波形
function myplot(B,A)
[H,W]=freqz(B,A,1000);
m=abs(H);
plot(W/pi,20*log10(m/max(m)));
grid on;
xlabel(\omega/\pi);
ylabel(幅度(dB));
axis([0,1,-80,5]);
title((a) s(t)損耗函數(shù)曲線);
%濾波器輸出波形
function tplot(xn,T,yn)
n=0:length(xn)-1;
t=n*T;
plot(t,xn);
grid on;
xlabel(t/s);
ylabel(y(n));
axis([0,t(end),min(xn),1.2*max(xn)])
title((b) s(t)的波形);