1. 短時傅里葉變換程序,幫忙解釋一下~急~MATLAB
a=wavread('jiasiqi.wav'); %將音頻信號jiasiqi.wav讀入
subplot(2,1,1), %分配畫布,一幅圖上共兩個圖,這是第一個
plot(a);title('original signal'); %畫出原始信號,即前面這個音頻信號的原始波形
grid %添加網格線
N=256; %設置短時傅里葉變換的長度,同時也是漢明窗的長度
h=hamming(N); %設置漢明窗
for m=1:N %用漢明窗截取信號,長度為N,主要是為了減少截斷引起的柵欄效應等
b(m)=a(m)*h(m)
end
y=20*log(abs(fft(b))) %做傅里葉變換,取其模值,即幅頻特性,然後用分貝(dB)表示
subplot(2,1,2) %分配畫布,第二副圖
plot(y);title('短時譜'); %畫出短時譜
grid %添加網格線
2. 怎麼用matlab實現離散短時傅里葉變換
離散傅里葉變換函數:fft,help一下就可以
3. matlab中用specgram做完短時傅里葉變換如何用程序實現返回縱坐標的值
matlab自帶了短時傅里葉變換的分析函數,老版本的matlab是specgram函數,新的改成了spectrogram函數,雖然一說到時頻分析,都會說到小波分析,小波分析要比短時傅里葉要好雲雲,但在分析信號的瞬時頻譜時,短時傅里葉還是有它的用武之地的。前一陣也看了一些有關小波分析的matlab實現,發現幫助中使用小波也多是除噪、壓縮,都說小波是時頻顯微鏡,它的用武之地還是在於查看高頻在哪一級分解中,進而可以有效濾除一些信號,比如除噪,所以短時傅里葉變換查看瞬時頻率正好互補一下。時頻分析還認識的不深,一個階段的想法而已。
另外,之前對matlab的掃頻函數chirp做過總結,見http://blog.sina.com.cn/s/blog_6163bdeb0100qbqo.html,裡面就是使用spectrogram函數來查看產生的掃頻信號的瞬時頻率的,當時不知道那個函數是幹啥,就感覺好神奇,現在正好看到,總結一下吧!
spectrogram
功能:使用短時傅里葉變換得到信號的頻譜圖。
語法:
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
[S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
說明:當使用時無輸出參數,會自動繪制頻譜圖;有輸出參數,則會返回輸入信號的短時傅里葉變
換。當然也可以從函數的返回值S,F,T,P繪制頻譜圖,具體參見例子。
參數:
x---輸入信號的向量。默認情況下,即沒有後續輸入參數,x將被分成8段分別做變換處理,
如果x不能被平分成8段,則會做截斷處理。默認情況下,其他參數的默認值為
window---窗函數,默認為nfft長度的海明窗Hamming
noverlap---每一段的重疊樣本數,默認值是在各段之間產生50%的重疊
nfft---做FFT變換的長度,默認為256和大於每段長度的最小2次冪之間的最大值。
另外,此參數除了使用一個常量外,還可以指定一個頻率向量F
fs---采樣頻率,默認值歸一化頻率
4. 怎樣在MATLAB中做短時傅立葉變換
matlab有STFT的自帶函數,你可以help下spectrogram,裡面有常式。下面這個小程序就是一個STFT的小示例:
T = 0:0.001:2;
X = chirp(T,100,1,200,'q');
spectrogram(X,128,120,128,1E3);
title('Quadratic Chirp');
5. 如何對我測得的一個信號用matlab進行短時傅里葉變換
你的數據就是10kHz采樣下的結果,幅度序列就是具體樣本值。剩下的加窗啊,重疊長度,fft長度等等都是信號處理基礎知識,你都做時頻分析了,應該不需要過多解釋基礎知識了
6. Matlab中短時傅里葉變換中一些函數變換步驟不明,求解釋!
(1)matlab是按列儲存的,當然可以使1*256的了,不過需要自己設。傅里葉變化是對稱變化,一般都要求數據個數是2的冪次。
(2)tfr對誰做fft變換,fft就和誰是同樣大小的矩陣。
(3)上面說了,fft變換後的波譜是對稱的,如果tfr是256的話,只需取256/2=128個就行。
(4)隨機數組或原數據體中數據之間無關的話,那麼變換後的振幅圖和相點陣圖都是上下波動的,密集線就是波動情況,密集程度與點距和線長有關。
7. 怎樣在MATLAB中做短時傅立葉變換
matlab中的函數spectrogram可用於短時傅里葉變換
語法:
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
[S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
8. 請問一組集散點的短時傅里葉變換怎麼用MATLAB實現
那是因為FFT的結果數值之間差異很大,所以在圖上顯示不出來,可以只顯示部分區間的數值,就是限定坐標值范圍。
9. 如何用matlab實現語音信號的短時傅里葉變換
matlab自帶了短時傅里葉變換的分析函數,也即spectrogram函數。
其使用方式有兩種
1. [S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
2. [S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
x---輸入信號的向量;Window---窗函數;Noverlap---各段之間重疊的采樣點數;Nfft---計算離散傅里葉變換的點數;Fs---采樣頻率Hz;F---在輸入變數中使用F頻率向量。
對應題主的問題
假設語音信號保存在wave變數中,那麼,對其做短時傅里葉變換的函數語句為
[S,F,T,P]=spectrogram(wave,window,noverlap,nfft,fs)
參數可以根據具體信號的特點進行設定。