日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时频分析:短时傅里叶变换实现(1)

發(fā)布時間:2025/3/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时频分析:短时傅里叶变换实现(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄:

  • 前言
  • 實驗環(huán)境
  • Matlab spectrogram函數(shù)
    • 1語法
    • 2使用說明
    • 3代碼如下:

前言

之前講了時頻分析的原理,現(xiàn)在來講講它在matlab里面的實現(xiàn)。
想要復習原理的同學,可以參照一一下這篇:短時傅里葉分析
本次先講解四個函數(shù),后續(xù)的請參見下篇。

實驗環(huán)境

本文的所有實驗都是在matlab2016a下通過的。

Matlab spectrogram函數(shù)

譜圖函數(shù)使用短時傅里葉變換

1語法

>

s = spectrogram(x)s = spectrogram(x,window)s =spectrogram(x,window,noverlap)s =spectrogram(x,window,noverlap,nfft)

2使用說明

s = spectrogram(x)
返回輸入信號(x)的短時傅里葉變換,s的每一列包含著信號s短期時間鎖定的頻率成分
詳細說明:
返回輸入信號x的譜圖,結(jié)果存儲在矩陣s中。默認設(shè)置:X被分割為8段,每段都有50%重疊,每個段落都經(jīng)過漢寧窗處理。nfft的點數(shù)是256或者比每段X最多點數(shù)大的2的倍數(shù)。如果x不能被分成8段,它會被截斷。
S = spectrogram(X,WINDOW)
詳細說明:當window是一個向量的時候,將x劃分成每段長數(shù)和window一樣長的n段,并使用window對每段信號進行處理,如果window是一個整數(shù),則將x分成這么多段,并使用漢寧窗進行處理。
S = spectrogram(X,WINDOW,NOVERLAP) .
noverlp 重疊部分是x中重疊的點數(shù),當window是整數(shù)的時候,它必須是個小于window的整數(shù),當window是向量的時候它必須小于window的長度,默認值是50%重疊。
S = spectrogram(X,WINDOW,NOVERLAP,NFFT)
額外設(shè)置NFFT的點數(shù)。

3代碼如下:

產(chǎn)生一個1024點的采樣信號,信號源是兩個正弦波的疊加,歸一化頻率分別是0.4pi,和0.8pi,高頻信號的能量是低頻的10倍。 N = 1024; n = 0:N-1; w0 = 2*pi/5; 計算短時傅里葉變換,并使用默認參數(shù)畫出譜圖。 x = sin(w0*n)+10*sin(2*w0*n); s = spectrogram(x); spectrogram(x,'yaxis')


重復驗證計算:

  • 將源信號分割成幾個段的信號 nsc=?Nx/4.5?nsc=?Nx/4.5?.
  • 使用漢寧窗進行加窗運算
  • 確定使用50%的重疊部分
    -對傅里葉計算的點做選擇,點數(shù)由max(256,2^p),其中p等于 p=?log2Nx?p=?log2?Nx?.

驗證這倆個途徑的計算結(jié)果是否相同:

Nx = length(x); nsc = floor(Nx/4.5); nov = floor(nsc/2); nff = max(256,2^nextpow2(nsc)); t = spectrogram(x,hamming(nsc),nov,nff); maxerr = max(abs(abs(t(:))-abs(s(:)))) maxerr =0

誤差為0,因此,這種方法是可以使用的。
將信號分割成8個等長的部分,每個區(qū)段由50%的部分重疊。將FFT的長度確定為和之前的步驟一樣長。計算短時傅里葉變換并確認它的結(jié)果和之前的兩個步驟得出的結(jié)果一樣。

ns = 8; ov = 0.5; lsc = floor(Nx/(ns-(ns-1)*ov)); t = spectrogram(x,lsc,floor(ov*lsc),nff); maxerr = max(abs(abs(t(:))-abs(s(:)))) maxerr =0

誤差為0,因此,這種方法是可以使用的。

總結(jié)

以上是生活随笔為你收集整理的时频分析:短时傅里叶变换实现(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。