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

本文通过地震数据二次谱求取地震子波谱,具体方法如下:

MATLAB代码实现如下:

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:Nz
    Fx = abs(fft(x(:,k)));
    FxTwo(:,k) = (fft(Fx));
end
FxTwoAvg = sum(FxTwo,2)/Nz;

cLow = zeros(Nt, 1); %低通滤波器
for i = 1:Nt
    cLow(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

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

相关推荐
WXG10118 小时前
【matlab】matlab点云处理
开发语言·matlab
信号处理学渣8 小时前
matlab之将一个升序数组按照元素值连续与否分成多组
数据结构·算法·matlab
Evand J10 小时前
【MATLAB雷达滤波代码】二维,单雷达跟踪与滤波。EKF融合雷达的距离、角度+目标IMU数据。附代码下载链接
开发语言·matlab·雷达·ekf·雷达跟踪·角度观测
非著名架构师12 小时前
【光伏功率预测】EMD 分解 + PCA 降维 + LSTM 的联合建模与 Matlab 实现
人工智能·matlab·lstm·高精度光伏功率预测模型
yugi98783813 小时前
TDOA算法MATLAB实现:到达时间差定位
前端·算法·matlab
t1987512813 小时前
基于因子图与和积算法的MATLAB实现
开发语言·算法·matlab
rit843249913 小时前
MFOCUSS算法MATLAB实现:稀疏信号重构
算法·matlab·重构
free-elcmacom14 小时前
MATLAB物理仿真<1>电磁场有限元仿真
开发语言·matlab·电磁场仿真
软件算法开发15 小时前
基于跳蛛优化的LSTM深度学习网络模型(JSOA-LSTM)的一维时间序列预测算法matlab仿真
深度学习·matlab·lstm·一维时间序列预测·跳蛛优化·jsoa-lstm
Dev7z17 小时前
基于Matlab低光照图像自适应分段线性增强方法及系统实现
matlab·低光照图像·自适应分段线性增强