时频分析:短时傅立叶变换实现(4)
生活随笔
收集整理的這篇文章主要介紹了
时频分析:短时傅立叶变换实现(4)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄:
- 前言
- 實驗環境
- Matlab spectrogram函數
- 1語法
- 2使用說明
- 3代碼如下
- 3.1重新分配平方鳥聲的譜圖
- 3.2設置了下限的譜圖
- 參考:
前言
之前講了時頻分析的原理,現在來講講它在matlab里面的實現。
想要復習原理的同學,可以參照一下這篇:短時傅里葉分析(1)
本次講解進階的函數使用,
基礎的可以參見前面的:短時傅里葉實現(1)
中階的可以參見前面的:短時傅里葉實現(2)
高階的可以參見前面的:短時傅立葉實現(3)
實驗環境
本文的所有實驗都是在matlab2016a下通過的。
Matlab spectrogram函數
譜圖函數:使用短時傅里葉變換化成短時傅里葉變換的譜圖。
1語法
標準函數引用方式如下:
[___,ps] = spectrogram(___) [___] = spectrogram(___,'reassigned') [___,ps,fc,tc] = spectrogram(___)2使用說明
[,ps] = spectrogram()
返回一個譜密度估計的矩陣
[] = spectrogram(,’reassigned’)
將譜的能量定位到時域的中心,如果你的信號包含中心穩定的視頻成分,則這個操作會生成一個更尖銳的譜圖。
[,ps,fc,tc] = spectrogram()
返回兩個矩陣,fc和tc,包含著每個譜密度和功率譜估計的頻率和時域中心
3代碼如下
3.1重新分配平方鳥聲的譜圖
%產生一個平方鳥聲(chirp)信號,采樣頻率是1khz,采樣時間是2秒,前一秒的信號是100hz,后一秒的信號是200hz。 Fs = 1000; t = 0:1/Fs:2-1/Fs; y = chirp(t,100,1,200,'quadratic'); %估計重新濃縮的信號譜圖 % 將信號劃分成長度為128個點,使用KAiser窗加窗,床的參數是18 %每個間隔段,重疊120個樣本 %在【128/2+1】=65個點處和【(length(x)-120)/(128-120)】=235時間塊處得到頻率點 spectrogram(y,kaiser(128,18),120,128,Fs,'reassigned','yaxis')如圖所示
3.2設置了下限的譜圖
%產生一個平方鳥聲(chirp)信號,采樣頻率是1khz,采樣時間是2秒,前一秒的信號是100hz,后一秒的信號是200hz。 Fs = 1000; t = 0:1/Fs:2-1/Fs; y = chirp(t,100,1,200,'quadratic'); %估計信號的時間依賴的功率譜密度 %將信號劃分成長度為128個點,使用KAiser窗加窗,床的參數是18 %每個間隔段,重疊120個樣本 %在【128/2+1】=65個點處和【(length(x)-120)/(128-120)】=235時間塊處得到頻率點 %輸出頻率和時間的功率譜密度估計的中心,將功率譜密度低于30的設置為0 [~,~,~,pxx,fc,tc] = spectrogram(y,kaiser(128,18),120,128,Fs, ...'MinThreshold',-30); 畫出非零部分的時間頻率函數 plot(tc(pxx>0),fc(pxx>0),'.')如圖所示:
參考:
mathworks
總結
以上是生活随笔為你收集整理的时频分析:短时傅立叶变换实现(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 时频分析:短时傅里叶实现(3)
- 下一篇: 时频分析:短时傅立叶变换实现(5)