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