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

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

相关推荐
简简单单做算法32 分钟前
基于WOA鲸鱼优化CNN-BiLSTM网络模型的多输入单输出回归预测算法matlab仿真
matlab·回归预测·cnn-bilstm·woa-cnn-bilstm·鲸鱼优化
cici1587436 分钟前
基于高斯混合模型(GMM)的说话人识别系统MATLAB实现
开发语言·人工智能·matlab
崇山峻岭之间36 分钟前
Matlab学习记录11
开发语言·学习·matlab
bu_shuo43 分钟前
GUI_Syre报错问题解决
matlab·synrm·syr-e
gihigo199843 分钟前
回溯搜索法与梯度下降/牛顿迭代结合的MATLAB优化实现
开发语言·matlab
fengfuyao98544 分钟前
基于MATLAB的图像融合评价指标实现方案
开发语言·matlab
程员外44 分钟前
如何优化MATLAB动画的性能?从卡顿到流畅的实战技巧
matlab
春日见2 小时前
如何提升手眼标定精度?
linux·运维·开发语言·数码相机·matlab
ytttr87314 小时前
MATLAB基于LDA的人脸识别算法实现(ORL数据库)
数据库·算法·matlab
wuk99814 小时前
matlab为地图进行四色着色
开发语言·matlab