《完成實驗03 快速傅立葉變換》由會員分享,可在線閱讀,更多相關(guān)《完成實驗03 快速傅立葉變換(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實驗三 快速傅立葉變換
一、實驗目的
1.掌握fft函數(shù)的用法。
2.了解FFT的用途。
二、實驗內(nèi)容
1.利用FFT進行信號檢測。分析信號頻譜所對應頻率軸的數(shù)字頻率和頻率軸的頻率范圍。
2. 對例2,進一步增加截取長度和FFT點數(shù),如N加大到256,觀察信號頻譜的變化,分析產(chǎn)生這一變化的原因。在截取長度不變的條件下改變采樣頻率,觀察信號頻譜的變化,分析產(chǎn)生這一變化的原因。
3. 對例3,加大噪聲到2*randn(1,N)和8*randn(1,N),畫出并比較不同噪聲下時域波形和頻譜。
4.比較DFT和FFT的運算時間。(計時函數(shù) tic, toc)
5.對給定語音信號進行
2、譜分析,寫出采樣頻率,畫出語音信號的波形及頻譜,并分析語音信號的頻率分布特點。
三、實驗例程
%例1 求信號功率譜
實驗結(jié)果與實驗流程圖如下圖示:
輸入模擬信號表達式
求出模擬信號功率
觀察功率譜
%例2 模擬信號,以進行取樣,求N點DFT的幅值譜
(1)%N分別為
(1) N=45 (2) N=50
(3) N=55 (4) N=60
實驗運行結(jié)果如下圖示:
(2). 對例2,進一步增加截取長度和FFT點數(shù),如N加大到256,觀察信號頻譜的變
化,分析產(chǎn)生這一變化的原因。
N=256;n=0:N-1;t
3、=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('FFT N=256')
實驗程序運行結(jié)果如右圖示:
產(chǎn)生這一變化原因為:
(3).在截取長度不變的條件下改變采樣頻率,觀察信號頻譜的變化,分析產(chǎn)生變化的原因。
改編程序如下:
N=256;n=0:N-1;t=0.1*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));titl
4、e('FFT N=256')
實驗運行結(jié)果如右圖示:
信號頻譜產(chǎn)生這一變化的原因:
對模擬信號x(t)
進行取樣并求不同N點DFT的幅值譜
進一步增加截取長度和FFT點數(shù),觀察信號頻譜并分析
截取長度不變的條件下改變采樣頻率,觀察信號頻譜的變化并分析
實驗流程圖如下圖示:
%例3 參數(shù)同上,N取64,并在信號中加入噪聲w(t),比較有無噪聲時的信號譜
%由結(jié)果可以看出這種噪聲不影響信號檢測
(1)加大噪聲到8*randn(1,N)
figure(2)
subplot(2,1,1)
5、N=64;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('FFT N=64')
subplot(2,1,2)
N=64;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t)
+0.8*randn(1,N);
y=fft(x,N);
plot(q,abs(y));
title('FFT N=64(with noise)')
實驗運行結(jié)果如右圖示:
(2)
6、 對例3,加大噪聲到2*randn(1,N)和8*randn(1,N),畫出并比較不同噪聲下時域波形和頻譜。
加大噪聲到2*randn(1,N)
figure(2)
subplot(2,1,1)
N=64;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('FFT N=64')
subplot(2,1,2)
N=64;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t
7、)
+ 2*randn(1,N);
y=fft(x,N);
plot(q,abs(y));
title('FFT N=64(with noise)')
實驗運行結(jié)果如右圖示:
對模擬信號x(t)
進行取樣并求N點DFT的幅值譜
在信號中加入不同噪聲w(t)
并畫出頻譜
比較兩種不同噪聲頻譜與有無噪聲時的信號譜并分析結(jié)果
比較兩種不同噪聲頻譜與有無噪聲時的信號譜并分析結(jié)果
4.比較DFT和FFT的運算時間。(計時函數(shù) tic, toc)
N分別取256,512,1024,2048,4096,
8、…
程序如下:
N=256;
N=4096;
x=randn(1,N);
tic
y=dft(x,N);
toc
tic
z=fft(x);
toc
N=256:Elapsed time is 0.172000 seconds.
Elapsed time is 0.015000 seconds.
N=512:Elapsed time is 0.687000 seconds.
Elapsed time is 0.000000 seconds.
N=1024:Elapsed time is 3.031000 seconds.
Elapsed time is 0.04
9、7000 seconds.
N=2048:Elapsed time is 13.375000 seconds.
Elapsed time is 0.063000 seconds.
N=4096:Elapsed time is 59.250000 seconds.
分別求出序列計算DFT和FFT的運算時間
計算不同N點所用時間
比較分析兩種變換計算時間
Elapsed time is 0.125000 seconds.
經(jīng)過對比可以得出如下結(jié)論:
5. 對語音進行頻譜分析。
讀語音函數(shù) [x,fs]=wavread
10、(‘a(chǎn)i.wav’);
(1) 要求對整個語音x做FFT,得出頻譜(X(k)),畫出語音信號的時域波形及頻譜。并分別求出k=300,3500所對應的信號頻率(Hz)
提示:
(2)從語音中截取一段語音(256點)做FFT,得出頻譜,畫出時域波形及頻譜。分別求出k=5,60時所對應的信號頻率(Hz)
(3)根據(jù)頻譜對語音信號頻率分布特點進行分析。
實驗程序如下:
(1)畫時域波形并對整個語音序列做FFT
[x,fs]=wavread('ai5.wav');
subplot(2,1,1)
N=length(x);
n=0:N-1;
plot(n,x)
11、;
xlabel('n');
ylabel('x');
title('時域波形');
subplot(2,1,2)
N=length(x);
n=0:N-1;
t=0.01*n;
q=n*2*pi/N;
y=fft(x,N);;
plot(q,abs(y));
xlabel('n');
ylabel('ai5');
title('FFT');
(2)并分別求出k=300,3500所對應的信號頻率(Hz)
[x,fs]=wavread('ai5.wav')N=length(x);n=0:N-1;
t=n*(1/fs);q=n*2*pi/N;n1=3
12、00;q1=n1*2*pi/N;
f1=q1*fs/(2*pi)n2=3500;
q2=n2*2*pi/N;f2=q2*fs/(2*pi)
實驗結(jié)果如下
fs = 16000
f1 = 315.7895
f2 = 3.6842e+003
(3)從語音中截取一段語音(256點)做FFT,得出頻譜,畫出時域波形及頻譜。分別求出k=5,60時所對應的信號頻率(Hz)
程序如下:
[x,fs]=wavread('ai5.wav');
subplot(2,1,1)
N=256;n=0:N-1;x=x(1:256);
plot(n,x);xlabel('n');
ylabel('
13、x');
title('256點時域波形');
subplot(2,1,2);
N=256;n=0:N-1;
t=0.01*n;q=n*2*pi/N;
x=x(1:256);y=fft(x,N);;
plot(q,abs(y));
xlabel('n');
ylabel('ai5');title('FFT-256');
(4)分別求出k=5,60時所對應的信號頻率(Hz)
[x,fs]=wavread('ai5.wav');
subplot(2,1,1)
N=256;n=0:N-1;x=x(1:256);
t=0.01*n;q=n*2*pi/N;
x=x(1:256
14、);y=fft(x,N);
n1=5;q1=n1*2*pi/N;
f1=q1*fs/(2*pi)n2=60;
q2=n2*2*pi/N;
f2=q2*fs/(2*pi)
實驗結(jié)果如下:
f1 =
312.5000
f2 =
3.7500e+003
在語音中截取一段語音(256點)做FFT,畫出時域波形及頻譜
分別求出k=5,60時所對應的信號頻率(Hz)并分析實驗結(jié)果
讀語音函數(shù) [x,fs]得出時域波形
對整個語音x做FFT,得出頻譜(X(k)),并分別求出某些點信號頻率(Hz)
實驗流程圖如下
實驗分析如下: