当前位置:首页 > 编程笔记 > 正文
已解决

Matlab | 基于二次谱提取地震数据的地震子波

来自网友在路上 177877提问 提问时间:2023-11-02 22:24:25阅读次数: 77

最佳答案 问答题库778位专家为你答疑解惑

本文通过地震数据二次谱求取地震子波谱,具体方法如下:
地震数据谱反演压缩感知算法实现及应用
MATLAB代码实现如下:

function w = SndSpecExtWavelet(x, M)
% 功能:基于二次谱提取输入地震数据data的地震子波wavelet
%      Extracting Wavelet from Input Seismic Data Based on Second Spectrum
% 输入:
%       x     -  地震信号,Nt×Nz
%       M     -  提取地震子波的长度
% 输出:
%       w     -  提取的地震子波,1×M
% 时间:2023/10/14[Nt,Nz] = size(x);
FxTwo = zeros(Nt,Nz);
% 多道平均法
for k = 1:NzFx = abs(fft(x(:,k)));FxTwo(:,k) = (fft(Fx));
end
FxTwoAvg = sum(FxTwo,2)/Nz;cLow = zeros(Nt, 1); %低通滤波器
for i = 1:NtcLow(i) = 0.5*(1+cos(2*pi*(i-1)/Nt));
end
FxTwoLow = FxTwoAvg .* cLow;
FxLow = (ifft(FxTwoLow));
we = real(ifft(FxLow));
wm = zeros(1,M);
wm(ceil(M/2):M) = we(1:ceil(M/2));
wm(1:ceil(M/2)) = we(Nt-floor(M/2):Nt);
p = max(abs(wm));
w = wm./p; % 归一化end

自己写的代码,如有错误还请联系。创作不易,记得点赞支持哦,谢谢!

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Matlab | 基于二次谱提取地震数据的地震子波":http://eshow365.cn/6-30559-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!