|
|
實驗一
用Matlab進(jìn)行信號的一維快速傅立葉變換
一、 實驗?zāi)康?br />
1、了解傅立葉變換的物理意義:序列的離散傅立葉變換就是序列的離散頻譜; 2、了解FFT,掌握FFT的函數(shù)調(diào)用格式;
3、應(yīng)用FFT計算信號的頻譜。
二、 實驗原理:?
1、離散傅立葉變換(DFT)及其主要性質(zhì)
DFT表示離散信號的離散頻譜,DFT的主要性質(zhì)中有奇偶對稱特性,虛實特性等。通過實驗可以加深理解。
對于單一頻率的三角序列來說他的DFT譜線也是單一的。
2、利用DFT對信號進(jìn)行頻譜分析
DFT的重要應(yīng)用之一是對時域連續(xù)信號的頻譜進(jìn)行分析,稱為傅立葉分析,時域連續(xù)信號離散傅立葉分析的基本步驟如圖2。1所示。
Sc(t)?LPF?A/D?X?DFT?y(k)
?
W(n)
其中混疊低通濾波LPF的引入,是為了消除或減少時域連續(xù)信號轉(zhuǎn)換成序列時可能出現(xiàn)的頻譜混疊的影響。實際工作中,時域離散信號x(n)的時寬是很長的甚至是無限長的。由于DFT之前,用一個時域有限的窗函數(shù)W(n)加到X(n)上是非常重要的。
3、 快速傅立葉變換
快速傅立葉變換是計算離散傅立葉變換的一種快速算法,為了提高運算速度,F(xiàn)FT將DFT的計算逐次分解成較小點數(shù)的DFT。按時間抽取的FFT算法把輸入序列x(n)按其n值為偶數(shù)或奇次分解成越來越短的序列。按頻率抽取的FFT算法把輸入序列x(n)按其k為偶數(shù)或奇次分解成越來越短的序列。
三、 實驗用MATLAB語言工具函數(shù)簡介
MATLAB中計算序列的離散傅立葉變換和逆變換是采用快速算法,利用fft 和ifft函數(shù)實現(xiàn)。調(diào)用格式分別為[Xk]=fft(Xn,N)和[XN]=ifft(X,N)。
四、 實驗要求與實驗內(nèi)容
1、 clear all
>> fs=1000;N=200;
>> n=0:N-1;t=n/fs;
>> x=sin(2*pi*50*t)+sin(2*pi*120*t); >> x=x+randn(1,length(t));
>> y=fft(x,N);
>> f=n*fs/N;
>> mag=abs(y);
>> subplot(2,2,1),plot(f,mag); >> xlabel('t');ylabel('x(t)'); >> title('x(t) N=200');
實驗3。(1)
N=100;
n=0:N-1;
xn=3*(0.9+0.3*j).^n; XK=fft(xn,N);
magXK=abs(XK);
phaXK=angle(XK); subplot(3,2,1)
plot(n,xn)
xlabel('n');ylabel('x(n)');
title('x(n) N=100'); subplot(2,2,2)
k=0:length(magXK)-1; stem(k,magXK,'.'); xlabel('k');ylabel('|X(k)|');
title('X(k) N=100'); 實驗3。(2)
clear all
close all
N=100;
FS=1;
n=0:1/FS:N-1; x=cos((2*pi/N)*n); subplot(3,1,1) plot(x);
title('x=cos((2*pi/N)*n)');
xlabel('序列x(n)')
grid on
number=512;
y=fft(x,number); z=0:length(y)-1; f=FS*z/length(y); subplot(3,1,3) plot(f,abs(y)); title('信號的FFT');
xlabel('頻率Hz')
grid on
實驗3。(3)
clear all
close all
FS=1;
n=100;
w=boxcar(n);
subplot(3,1,1) plot(w)
title('R(n)'); xlabel('序列x(n)')
grid on
number=512;
y=fft(w,number); z=0:length(y)-1; f=FS*z/length(y); subplot(3,1,3) plot(f,abs(y)); title('信號的FFT');
xlabel('頻率Hz')
grid on
實驗二
用Matlab設(shè)計IIR數(shù)字濾波器
五、 實驗?zāi)康?br />
熟悉模擬Batterworth濾波器設(shè)計和用雙線性變換法設(shè)計數(shù)字IIR濾波器的方法。
六、 實驗原理:
利用雙線性變換法設(shè)計IIR濾波器。首先要設(shè)計出滿足指標(biāo)要求的模擬濾波器的傳遞函數(shù)Ha(s),r然后由Ha(s)通過雙線性變換可得到所要設(shè)計的 IIR濾波器的系統(tǒng)函數(shù)H(z).如果給定的指標(biāo)為數(shù)字濾波器的指標(biāo),則首先要轉(zhuǎn)換為模擬域的指標(biāo)。
1、低通數(shù)字濾波器的設(shè)計
2、高通數(shù)字濾波器的設(shè)計
3、帶通數(shù)字濾波器的設(shè)計
4、帶阻數(shù)字濾波器的設(shè)計
七、 實驗用MATLAB語言工具函數(shù)簡介
用雙線性變換法設(shè)計IIR濾波器是IIR濾波器設(shè)計的經(jīng)典方法,首先根據(jù)模擬濾波器的指標(biāo)設(shè)計出相應(yīng)的模擬濾波器,然后將設(shè)計好的模擬濾波器轉(zhuǎn)化成滿足給定技術(shù)指標(biāo)的數(shù)字濾波器。在MATLAB的數(shù)字信號處理語言工具箱中提供了相應(yīng)的設(shè)計函數(shù),常用的有:
1、 Batterworth濾波器階數(shù)選擇函數(shù)
[N,Wn]=buttord(Wp,Ws,Rs)
2、 零極點增益模型到傳遞函數(shù)模型的轉(zhuǎn)換
[num,den]=zp2tf(Z,P,K);
3、從低通到低通的轉(zhuǎn)換
[b,a]=lp21p(Bap,Aap,Wn);
4、雙線形變換函數(shù)
[bz,az]=bilinear(b,a,Fs);
八、 實驗要求與實驗內(nèi)容
1、用雙線性變換法設(shè)計Batterworth低通數(shù)字IIR濾波器,要求通帶內(nèi)頻率低于0.2rad時,容許的幅度誤差在1dB之內(nèi),頻率在0.3rad到pi rad之間的阻帶衰減大于10dB.
>> clear all
>> Wp=0.2*pi;
>> Ws=pi;
>> Rp=1;
>> Rs=10;
>> Fs=0.5;
>> Ts=1/Fs;
>> [N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'); >> [Z,P,K]=buttap(N);
>> [Bap,Aap]=zp2tf(Z,P,K);
>> [b,a]=lp2lp(Bap,Aap,Wn); >> [bz,az]=bilinear(b,a,Fs);
>> [H,W]=freqz(bz,az);
>> plot(W*Fs/(2*pi),abs(H)); >> grid
>> xlabel('頻率/Hz')
>> ylabel('幅度')
>> clear all
實驗三
用窗口法設(shè)計FIR數(shù)字濾波器
一、 實驗?zāi)康?br />
了解一個實際濾波器設(shè)計過程,加深掌握窗口法設(shè)計FIR數(shù)字濾波的原理和窗函數(shù)對濾波器的性能的影響。
二、 實驗原理:
設(shè)所希望得到的濾波器的理想頻率響應(yīng)為Hd(e^jw).那么我們要尋找一個傳遞函數(shù)去逼近Hd(e^jw)。在這種逼近中最直接的一種方法是從單位取樣的響應(yīng)序列h(n)著手,使h(n)逼近理想的單位取樣響應(yīng)Hd(n),我們知道Hd(n)可以從理想頻率響應(yīng)Hd(e^jw)通過傅立葉反變換來得到。
三、 實驗用MATLAB語言工具函數(shù)簡介
1、矩形序列Rn(n)
調(diào)用格式:w=boxcar(n)
2、三角窗函數(shù)triang
調(diào)用格式:W=triang(n)
四、 實驗要求與實驗內(nèi)容
clear all
close all
n=21;
w=triang(n); b=fir1(20,0.5,w) freqz(b,1)
|
|