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

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

相关推荐
马上到我碗里来6 小时前
Simulink对仿真数据进行FFT频谱分析
matlab·simulink·fft
十七算法实验室6 小时前
Matlab实现麻雀优化算法优化随机森林算法模型 (SSA-RF)(附源码)
算法·决策树·随机森林·机器学习·支持向量机·matlab·启发式算法
记录无知岁月8 小时前
【MATLAB】目标检测初探
开发语言·yolo·目标检测·matlab·yolov3·yolov2
远望清一色8 小时前
基于MATLAB身份证号码识别
开发语言·图像处理·算法·matlab
大福是小强11 小时前
035_Progress_Dialog_in_Matlab中的进度条对话框
ui·matlab·进度条·界面开发·ux·用户界面
慕容复之巅11 小时前
基于MATLAB的条形码的识别图像处理报告
开发语言·图像处理·matlab
小喵要摸鱼14 小时前
MATLAB 使用教程 —— 矩阵和数组
matlab·矩阵
金星娃儿14 小时前
MATLAB基础知识笔记——(矩阵的运算)
笔记·matlab·矩阵
哈听星1 天前
解非线性方程组
数学建模·matlab
亚图跨际1 天前
MATLAB和R及Python伪时间分析
python·matlab·r语言·伪时间分析