时频分析:短时傅立叶变换实现(5)
目錄:
- 前言
- 實驗環境
- Matlab spectrogram函數
- 1語法
- 2使用說明
- 3代碼如下
- 3.1譜圖聚集和門限設置
- 參考:
前言
之前講了時頻分析的原理,現在來講講它在matlab里面的實現。
想要復習原理的同學,可以參照一下這篇:短時傅里葉分析
本次講解終階的函數使用,
基礎的可以參見前面的:短時傅里葉實現(1)
中階的可以參見前面的:短時傅里葉實現(2)
高階的可以參見前面的:短時傅里葉實現(3)
進階的可以參見前面的:短時傅里葉實現(4)
實驗環境
本文的所有實驗都是在matlab2016a下通過的。
Matlab spectrogram函數
譜圖函數:使用短時傅里葉變換化成短時傅里葉變換的譜圖。
1語法
標準函數引用方式如下:
[___] = spectrogram(___,freqrange) [___] = spectrogram(___,spectrumtype) [___] = spectrogram(___,'MinThreshold',thresh)2使用說明
[] = spectrogram(,freqrange)
返回由frequencge確定范圍的功率譜密度或者功率譜估計,正確的選項有單邊(oneside),雙邊(twoside),中心(centered)。
[] = spectrogram(,spectrumtype)
返回功率譜估計。如果使用psd參數。返回能量,如果使用power參數
[] = spectrogram(,’MinThreshold’,thresh)
將門限值之以下的信號,ps 10log10log10(ps) ≤≤ thresh .設置為0.
3代碼如下
3.1譜圖聚集和門限設置
%產生一個信號,采樣頻率是1khz,采樣時間是兩秒 nSamp=2048; Fs=1024; t=(0:nSamp-1)'/Fs; %在第一秒,信號包含一個400hz的正弦和凹二次鳥聲信號,鳥聲信號關于間隔中點是對稱的,起始和結束為250hz, %包%含一個最小的150hz信號 t1=t(1:nSamp/2); x11=sin(2*pi*400*t1); x12=chirp(t1-t1(nSamp/4),150,nSamp/Fs,1750,'quadratic'); x1=x11+x12; % 信號的剩余部分包含兩個線性衰落鳥聲成分,一個鳥聲的初始頻率是250hz最后降到100hz,其他線性鳥聲有一個出聲頻率400hz,并減到250hz。 t2=t(nSamp/2+1:nSamp); x21=chirp(t2,400,nSamp/Fs,100); x22=chirp(t2,550,nSamp/Fs,250); x2=x21+x22; %給信號添加高斯白噪聲,信噪比為20db,設置隨機數生成器,為了可重復的結果。 SNR=20; rng('default') sig=[x1;x2]; sig=sig+randn(size(sig))*std(sig)/db2mag(SNR); %計算并繪制信號的譜圖,長度為63的kaizer窗,形狀參數17,10個左右重疊值,FFT長度為256. nwin=63; wind=kaiser(nwin,17); nlap=nwin-10; nfft=256; spectrogram(sig,wind,nlap,nfft,Fs,'yaxis')如圖所示
%任何能量值小于噪聲(SNR)的信號都被設置為0
spectrogram(sig,wind,nlap,nfft,Fs,’MinThreshold’,-SNR,’yaxis’)
%將譜功率密度估計值壓縮到能量中心的位置
spectrogram(sig,wind,nlap,nfft,Fs,’reassign’,’yaxis’)
結果如圖所示:
%對集中能量譜的信號設置閾值,每個元素能量值低于SNR的被設置為0
spectrogram(sig,wind,nlap,nfft,Fs,’reassign’,’MinThreshold’,-SNR,’yaxis’)
如圖所示:
函數相關功能展示完畢,大家可以根據自己需要,選擇參數
參考:
mathworks
總結
以上是生活随笔為你收集整理的时频分析:短时傅立叶变换实现(5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 时频分析:短时傅立叶变换实现(4)
- 下一篇: data fastboot 擦除_fas