时频分析:短时傅里叶实现(3)
目錄:
- 前言
- 實驗環境
- Matlab spectrogram函數
- 1語法
- 2使用說明
- 3代碼如下
- 3.1譜圖和瞬時頻率
- 3.2鳥聲信號功率譜密度追蹤
- 參考:
前言
之前講了時頻分析的原理,現在來講講它在matlab里面的實現。
想要復習原理的同學,可以參照一下這篇:短時傅里葉分析
本次講解高階的函數使用(1),
基礎的可以參見前面的:短時傅里葉實現(1)
中階的可以參見前面的:短時傅里葉實現(2)
實驗環境
本文的所有實驗都是在matlab2016a下通過的。
Matlab spectrogram函數
譜圖函數:使用短時傅里葉變換化成短時傅里葉變換的譜圖。
1語法
標準函數引用方式如下:
[s,w,t] = spectrogram(___) [s,f,t] = spectrogram(___,fs) [s,w,t] = spectrogram(x,window,noverlap,w) [s,f,t] = spectrogram(x,window,noverlap,f,fs)2使用說明
[s,w,t] = spectrogram(_)
返回輸入信號的短時傅里葉變換,其中歸一化頻率向量w和時間向量t存放的是在那一點計算譜圖。w的長度和s的行數一樣,T的長度和k相等(參見前一篇),它的值是每段的中心時間。
[s,f,t] = spectrogram(_,fs)
f是頻率向量f存放譜圖計算的點,基于采樣頻率fs。
[s,w,t] = spectrogram(x,window,noverlap,w)
基于歸一化向量w,計算譜圖并返回。
[s,f,t] = spectrogram(x,window,noverlap,f,fs)
基于周期頻率f返回譜圖。
3代碼如下
3.1譜圖和瞬時頻率
利用譜圖函數度量和追蹤一個信號的瞬時頻率。
%產生一個平方鳥聲(chirp)信號,采樣頻率是1khz,采樣時間是2秒,前一秒的信號是100hz,后一秒的信號是200hz。 Fs = 1000; t = 0:1/Fs:2-1/Fs; y = chirp(t,100,1,200,'quadratic'); %估計鳥聲信號的譜圖使用短時傅立葉變換。 % 將信號劃分成長度為100個點,使用海明窗加窗,使用80個樣本重疊,估計[100/2+1]=51個頻率點,不使用默認 %的顏色棒。 spectrogram(y,100,80,100,Fs,'yaxis') view(-77,72) shading interp colorbar off如圖所示
由這個圖可以很好的觀測峰值頻率的變化
3.2鳥聲信號功率譜密度追蹤
通過確定在[(2000-80)/(100-80)]=96個時間點時,各個譜功率密度的最大值,追蹤鳥聲頻率的軌跡,將譜圖當作一個二維圖來可視化。恢復顏色棒。
[s,f,t,p] = spectrogram(y,100,80,100,Fs); [q,nd] = max(10*log10(p)); hold on plot3(t,f(nd),q,'r','linewidth',4) hold off colorbar view(2)如圖所示
參考:
mathworks
總結
以上是生活随笔為你收集整理的时频分析:短时傅里叶实现(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adb native raact 夜神_
- 下一篇: 时频分析:短时傅立叶变换实现(4)