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

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

相关推荐
分享资料9 小时前
MATLAB 中分号 (;)的作用
matlab
Evand J14 小时前
【PMSM例程11】永磁同步电机(PMSM)基于UKF的转速与转子位置估计。附下载链接
算法·matlab·卡尔曼滤波·永磁同步电机·ukf·pmsm·位置估计
严肃小白兔2 天前
优秀 MATLAB 作者、书籍推荐:国外经典教材与技术资源整理
matlab
熊猫_豆豆3 天前
buck-boost电路MATLAB仿真
matlab·电路·电力电子技术
逆向编程4 天前
MATLAB高级数据结构:cell、struct与table深度应用
开发语言·数据结构·matlab
星夜离尘564 天前
MATLAB 刚体坐标变换:点、方向和逆变换为什么不能混用
matlab
Evand J4 天前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
机器学习之心5 天前
基于贝叶斯物理信息神经网络的矿产预测与不确定性量化,MATLAB代码及复现报告
人工智能·神经网络·matlab·贝叶斯物理信息神经网络
Evand J5 天前
【PMSM例程4】PMSM电阻辨识与模型补偿EKF,MATLAB例程。附下载链接,包运行成功
开发语言·matlab·电机·ekf·卡尔曼·pmsm
slandarer5 天前
MATLAB | 文艺复兴:万圣节使用 MATLAB 绘制黑人抬棺动画
matlab·黑人抬棺