matlab小例子:秒懂互相關與褶積

2021-03-02 地震成像與模擬

互相關與褶積是勘探地震學和天然地震學中比較常用的一種數據分析手段。在勘探地震學中,往往用褶積模型(地震記錄是子波與地層反射係數的褶積)描述地震記錄的產生;在天然地震學中,常常用互相關來去除震源影響,即A點記錄的地震信號與B點記錄的地震信號的互相關結果(以A為參考)的正支是A點到B點的經驗格林函數,其與真正的格林函數只有振幅上的差異。獲得經驗格林函數之後,我們才可以從經驗格林函數中測量地震波的相速度或群速度,以便進一步分析。由此可見,無論是對於勘探地震學還是天然地震學,正確地理解和使用互相關與褶積都是極其重要的。首先,我們給出時間域的互相關與褶積的定義公式。

對於兩個連續信號fg,以g為參考,互相關的定義公式為:

其中T是信號的持續時間,對於離散信號,上式的離散表達式為:

其中,N是離散信號的採樣點數,對於連續信號fg,褶積的定義公式為:

其中T為信號fg的持續時間,從上式可以看出,褶積運算可以交換順序,結果不變。對於離散信號,其表達式為:

仔細觀察公式(1)~(4),我們總覺得相關與褶積存在某種聯繫,事實上,我們可以用褶積來表達相關,即:

以上是時間域的互相關與褶積的計算方法,同樣地,也可以在頻率域實現互相關,而且頻率域計算速度較快。為此,我們對式(1)作傅立葉變換有:

即以信號g為參考,fg的互相關,其頻率域結果是信號g的頻譜的共軛乘以f的頻譜,對式(6)做傅立葉反變換,即可獲得以g為參考的fg之間的互相關結果。廢話不多說,上matlab代碼:

我們利用波場數值模擬的方法獲得了某一個模型在偏移距為30 m60 m處的地震道信號,即上圖代碼中的信號gf。採取四種方法計算以信號g為參考的fg之間的互相關,分別是按時間域離散公式直接計算、調用matlab的xcorr函數計算、調用matlab的conv函數計算、在頻率域計算。代碼如下圖所示:

接下來,我們繪製原始信號和互相關結果的波形。繪圖部分代碼如下圖所示:

原始信號gf如圖1所示,四種方法獲得的互相關結果如圖2所示。

由於信號f的偏移距更長,因此其同相軸起跳時間更滯後(圖1)。以g為參考,作fg之間的互相關,事實上得到的互相關結果的正支是檢波點f到g的經驗格林函數(以f為震源的零延遲互相關結果的因果部分,反映了信號f相對於信號g的延遲程度),如圖2所示。如果以f 為參考,因果部分會出現在負支,因為相關方向相反。對于震源位置未知的背景噪聲成像領域中的應用,通常是將正支與負支相加除以2來獲得經驗格林函數。

1)xcorr函數的互相關結果是以參數2為參考,見代碼第33行;

2)conv函數實現互相關,一定令參考信號反序,見代碼第35-36行;

3)在頻率域實現互相關,一定要給信號補零(代碼第41行),互相關結果的時間序列是按[0~+lag_max, -lag_max~0]的形式輸出的,因此,要對其調用fftshift函數,使其時間序列變為[-lag_max +lag_max]。事實上,matlab的xcorr函數也是在頻率域實現的,而且在輸出時調整了時間序列順序,xcorr函數內部細節如下圖所示;

PS:完整的matlab代碼例子請從以下百度網盤分享連結下載(有效期為7天):

https://eyun.baidu.com/s/3dBm3hk

掃描二維碼

關注我們

微信號 : seismictechnique

相關焦點

  • 自相關和互相關函數計算方法總結及心得體會
    這個是信號分析裡的概念,他們分別表示的是兩個時間序列之間和同一個時間序列在任意兩個不同時刻的取值之間的相關程度,即互相關函數是描述隨機信號
  • 關於Matlab的那些事
    而後由於所學的專業是生命科學和環境相關的東西,用到matlab的機會不多,主要是一些功能用matlab實現起來不是很方便,而且手邊有現成的軟體可以做到,例如圖像分析,還有DNA序列分析都有現成軟體等。本以為不會與其有太多交集。我下決心學習matlab是在經歷幾件事情之後。
  • Matlab數據存取(三):注意事項及其他相關問題
    請在matlab中保持當前路徑在該數據文件對應的目錄下進行存取,否則,存取時請給出該數據文件的具體路徑。2. 存取時,請給出該數據文件的全稱(包括後綴名,讀取mat文件時可省略)3. load data.txt和A=load(『data.txt』)的區別請參閱精華貼:[原創]寫給學習matlab 的新手們4.
  • 學習matlab的一點心得體會
    而後由於所學的專業是生命科學和環境相關的東西,用到matlab的機會不多,主要是一些功能用matlab實現起來不是很方便,而且手邊有現成的軟體可以做到,例如圖像分析,還有DNA序列分析都有現成軟體等。本以為不會與其有太多交集。我下決心學習matlab是在經歷幾件事情之後。
  • 【Matlab】Sound
    sound在matlab裡更多的並不是用於製作音樂,而是提醒和分析聲音背後的數學,物理規律為什麼說是提醒呢,因為有些比較複雜的程序,往往需要matlab運算很久才會有結果,這時候人一般是不會盯著屏幕等著出結果,而是走開先去幹其他事。這時候就需要matlab在運算完後發出提示,最好是聲音。所以sound在matlab裡更多是用於提醒程序已運行完,結果已得出(一般用beep函數)。
  • 觀點丨關於Matlab的那些事
    而後由於所學的專業是生命科學和環境相關的東西,用到matlab的機會不多,主要是一些功能用matlab實現起來不是很方便,而且手邊有現成的軟體可以做到,例如圖像分析,還有DNA序列分析都有現成軟體等。本以為不會與其有太多交集。我下決心學習matlab是在經歷幾件事情之後。
  • MATLAB《自動控制原理》相關編程
    系統開環頻率特性上相位等於-180度時所對應的角頻率稱為相位穿越頻率%截止頻率:系統開環頻率特性上幅值為1時所對應的角頻率稱為幅值穿越頻率或截止頻率 結果如上四個圖:MATLAB內容往期回顧:MATLAB中繪製三維圖形MATLAB的輸入輸出input函數matlab
  • 大牛心得:學習matlab的一點心得體會
    而後由於所學的專業是生命科學和環境相關的東西,用到matlab的機會不多,主要是一些功能用matlab實現起來不是很方便,而且手邊有現成的軟體可以做到,例如圖像分析,還有DNA序列分析都有現成軟體等。本以為不會與其有太多交集。我下決心學習matlab是在經歷幾件事情之後。
  • 關於matlab程序運行時間計算方法的思考
    t1=clock;  b=0;  for i2=1:100000  for j2=1:10000  b=b+1;  end  end  t2=clock;  etime(t2,t1)  其中,clock命令是獲取系統的時間矢量,而etime函數則是計算兩個時間矢量之間的差並以秒單位形式表示
  • MATLAB的RTL-SDR硬體支持包使用詳細教程
    版本以後支持了調用RTL-SDR的硬體支持包,但是相關資料很少;中文網際網路上的教程關於如何使用的教程幾乎是空白。本文大概有以下幾個部分:  1.RTL-SDR驅動安裝  2.安裝matlab RTL-SDR硬體支持包  3.支持包的相關使用函數和例程二、RTL-SDR驅動安裝在拿到RTL-SDR
  • 【Matlab】繪圖
    Demonstration of PLOTS二、Live Scriptlive script是matlab比較新的一個功能,它也一直在推薦使用這個功能,非常適合小體積程序的快速預覽和修改。Title of example 4暫時先就這些東西組合起來看一個例子。這個例子是我們小組在做tension test時,用matlab繪製所有材料的stress-strain curve的一個片段。
  • 幫你快速入門MATLAB
    :預先配置矩陣 在上面的例子,我們使用zeros來預先配置(Allocate)了一個適當大小的矩陣。d:\matlab5\toolbox\matlab\funfund:\matlab5\toolbox\matlab\sparfund:\matlab5\toolbox\matlab\graph2dd:\matlab5\toolbox\matlab\graph3dd:\matlab5\toolbox\matlab\specgraph
  • Matlab高速列車,準備好上車了麼
    這篇文章的初衷,旨在大家一起交流討論學術相關的技術問題。有任何錯誤和更有效的方法十分非常極其歡迎👏!
  • 互相關(cross-correlation)中的一些概念及其實現
    正如卷積有線性卷積(linear convolution)和循環卷積(circular convolution)之分;互相關也有線性互相關(linear cross-correlation)和循環互相關(circular cross-correlation)。線性互相關和循環互相關的基本公式是一致的,不同之處在於如何處理邊界數據。其本質的不同在於它們對原始數據的看法不同。
  • Matlab畫圖指令小記
    在matlab一幅圖形中可能有多個曲線,為了區分開不同的曲線需要對曲線進行標示。matlab中用plot畫圖。plot(a,b)。其中是以a為橫坐標,b為縱坐標畫圖。當需要對不同的曲線畫不同的顏色時採用plot(x,y,'black')語句即可。其中black是指黑色線。
  • MATLAB入門教程系列--基礎知識
    例如要尋找計算反矩陣的命令,可鍵入 lookfor inverse,MATLAB即會列出所有和關鍵字inverse相關的指令。找到所需的命令後,即可用help進一步找出其用法。(lookfor事實上是對所有在搜尋路徑下的M文件進行關鍵字對第一註解行的比對,詳見後敘。)
  • 你的Matlab可告訴我了!
    師弟沉迷於我給他寫的小程序玩機器人無法自拔。師妹還在備戰期末考試。我更不敢拿導師開玩笑(怕勸退!)對啊,我還有師兄。我輕輕走到研三師兄旁邊,他一臉苦笑。我:咋啦,師兄?師兄娓娓道來..「別,我就是出於學術的角度」我懂,我幫你做個,就用matalb。一、下載手機版本Matlab去各大應用商店下載即可
  • 【Matlab】hw3
    否則一長串代碼是看不懂看不清的。如果可以的話,不要發圖片,直接發代碼,對方也方便運行測試,謝謝!舉個例子,我在requirements裡提到的arrayfun,它的效果是Apply function to each element of array。但由於顯示在我們眼前的單純只是一個函數,我們並不清楚它的源碼如何。
  • 【Matlab】逐像元偏相關分析
    理論知識:偏相關分析也稱淨相關分析,它在控制其他變量的線性影響的條件下分析兩變量間的線性相關性,所採用的工具是偏相關係數(淨相關係數)。
  • MATLAB萬能實用的非線性曲線擬合方法
    在科學計算和工程應用中,經常會遇到需要擬合一系列的離散數據,最近找了很多相關的文章方法,在這裡進行總結一下其中最完整、幾乎能解決所有離散參數非線性擬合的方法根據你的實際問題得到一系列的散點例如:根據上述的實際散點確定應該使用什麼樣的曲線,或者說是想要模擬的曲線