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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

互相关函数的频域计算

發布時間:2024/3/26 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 互相关函数的频域计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

互相關函數的頻域計算

1.時域計算

x1(n)x2(n)x1(n)與x2(n)的互相關定義如下

R(τ)=E[x1(m)x2(m+τ)]R(τ)=E[x1(m)x2(m+τ)]

離散信號的互相關由下式計算,結果中的R(n)2?N?1R(n)長度為2?N?1


R(n)=m=N?|n|?1m=0x1(m)x2(m+n)R(n)=∑m=0m=N?|n|?1x1(m)x2(m+n)

上代碼

x1 = [1,2,3,7,9,8]; x2 = [4,5,6,5,4,3]; N =length(x2); xc = xcorr(x1,x2,'biased'); [k,ind] = max(xc); an = acos((ind-N)/Fs*340/d)*180/pixc12 = zeros(2*N-1,1); m = 0; for i = -(N-1):N-1m = m+1;for t = 1:Nif 0<(i+t)&&(i+t)<=Nxc12(m) = xc12(m) + x2(t)*x1(t+i);end end end xc12 = xc12/N;

驗證可以看到自己循環計算得到的結果與matlab的xcorr結果相同

2.頻域計算

由維納-辛欽定理可知,隨機信號的自相關函數和功率譜密度函數服從一對傅里葉變換的關系


P(ω)=+?R(τ)e?jωτdτP(ω)=∫?∞+∞R(τ)e?jωτdτ

R(τ)=12π+?P(ω)ejωτdωR(τ)=12π∫?∞+∞P(ω)ejωτdω

P(ω)P(ω)x1x2x1、x2的互功率譜,這一步是把互相關函數變換到了頻域,互相關函數的傅里葉變化就是互譜密度,寫成下式


P(ω)=+?+?x1(t)x2(t+τ)dte?jωτdτP(ω)=∫?∞+∞∫?∞+∞x1(t)x2(t+τ)dt*e?jωτdτ

由交換積分性質和傅里葉變換的移位性質上式可簡化成以下形式(參考時域卷積頻域相乘推導)


P(ω)=F?1(ω)F2(ω)P(ω)=F1?(ω)F2(ω)

這也是互譜密度的頻域計算方法,時域互相關可以由上式做傅里葉逆變換得到


R(τ)=12π+?F?1(ω)F2(ω)ejωτdωR(τ)=12π∫?∞+∞F1?(ω)F2(ω)ejωτdω

matlab中xcorr函數計算相關就是在頻域計算的,這里用幾行代碼驗證下

x1 = [1,2,3,7,9,8,3,7]'; x2 = [4,5,6,5,4,3,8,2]'; N = length(x1)+length(x2)-1; NFFT = 64; range = NFFT/2+1-(N-1)/2:NFFT/2+1+(N-1)/2; xcorr(x1,x2) ifft(fft(x1,NFFT).*conj(fft(x2,NFFT))); r = fftshift(ifft(fft(x1,NFFT).*conj(fft(x2,NFFT)))); r = r(range)

關于這個計算,幾點需要注意:

  • 互相關函數不是對稱的,xcorr(x1,x2) != xcorr(x2,x1),而卷積計算是相等的,因此頻域計算要注意看誰取共軛,簡單記住哪個信號做參考就哪個信號取共軛,matlab的xcorr是第二個信號做參考
  • 頻域相乘恢復到時域時得到的是[0~+lag_max,-lag_max~0],而直接時域計算得到的就是[-lag_max~+lag_max],因此想要與xcorr對應需要將逆變換后的數據后半部分移到前面來(fftshift),matlab 的xcorr函數內部也可以看到這個操作, % Keep only the lags we want and move negative lags before positive
    % lags.
    c = [c1(m2 - mxl + (1:mxl)); c1(1:mxl+1)];
  • fft長度必須大于等于2N-1以避免混疊,長度大于2N?12N?1時,取后2N?12N?1個值,而頻域計算卷積是取前部分的值,參考這里,這里取后部分是指分別取[0:+lag_max]和[-lag_max:0]的后部分,而在處理過程中使用fftshift調換了先后順序,那么實際就相當于就取中間部分,如上面代碼中的range

總結

以上是生活随笔為你收集整理的互相关函数的频域计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。