matlab实现鬼波信号压制算法 代码实践--第二篇 频率-波数域鬼波压制

第二篇  matlab实现频率-波数域鬼波压制方法

本篇用来介绍频率-波数域鬼波压制的实现思路和压制效果

算法实现思路见2.3节,除了文中代码外,需配置鬼波压制算法工具包(https://download.csdn.net/download/zw461450141/16811437)

目录

第二篇  频率-波数域鬼波压制方法

2、频率-波数域鬼波压制方法

2.1 频率波数域鬼波压制思路

2.2 频率-波数域鬼波压制效果

2.1.1 鬼波压制前后单道数据对比图

2.1.2 鬼波压制前后剖面数据对比图

2.1.3 鬼波压制前后数据F-K谱对比图

2.3 代码实现过程

 

2.1 频率波数域鬼波压制思路

matlab实现鬼波信号压制算法 代码实践--第二篇 频率-波数域鬼波压制_第1张图片

频率-波数域鬼波压制方法在精确求取鬼波延迟时间前提下可以有效压制鬼波;

但实际情况下,由于受到起伏海面、复杂海底地层条件等因素的影响,准确的鬼波延迟往往难以估计。

频率-波数域鬼波压制方法在实际资料处理的应用中,有以下几点限制:

1)拖缆检波器需沉放在同一深度,意味着此类方法仅适用于水平拖缆采集资料的鬼波压制;

2)此类方法仅适用于二维采集资料,由于海上宽方位、全方位三维采集资料横测线方向上采样稀疏,当对横测线进行傅里叶变换时,会导致横测线方向上的波数混淆严重。

2.2 频率-波数域鬼波压制效果

2.1.1 鬼波压制前后单道数据对比图

matlab实现鬼波信号压制算法 代码实践--第二篇 频率-波数域鬼波压制_第2张图片

2.1.2 鬼波压制前后剖面数据对比图

matlab实现鬼波信号压制算法 代码实践--第二篇 频率-波数域鬼波压制_第3张图片

2.1.3 鬼波压制前后数据F-K谱对比图

matlab实现鬼波信号压制算法 代码实践--第二篇 频率-波数域鬼波压制_第4张图片

2.3 代码实现过程

%-------------------------------------------------------
% 频率--波数域鬼波压制算法实践   
% 结合模拟的海上拖缆采集数据 对算法进行验证   
%---------------------------------------------------------------------
%% 加载数据  
clc;clear;close all;
addpath(genpath('./syn_data'));
addpath(genpath('./toolfunction'));
addpath(genpath('./deghostfunction'));
d = load('rcv_18_101.dat'); 
%% 直达波切除
d_rawc= derectcut(d,1,200,101,400);
figure; subplot(1,2,1); imagesc(d); colormap('redblue'); title('原始数据'); caxis([-0.05,0.05]);
subplot(1,2,2); imagesc(d_rawc); colormap('redblue'); title('切除直达波数据'); caxis([-0.05,0.05]);
%% 给数据加噪声
d_rawc = addrandnoise(d_rawc,9,10);
%% 数据采集参数设置
dt = 0.0005;  % 采样时间
dx = 2 ;      % 道间距
[nt,ntra] = size(d_rawc);  % nt采样总时长  ntra道数
rcvdepth = 18;  % 检波器深度   水平拖缆  未考虑起伏海面的影响
xx = 0:dx:(ntra-1)*dx; 
tt = 0:dt:(nt-1)*dt;
ks = 0.1; % 正则化系数
%% 基于峭度最大化的频率空间域自适应鬼波压制
[d_raw_deghost] = deghost_fk(d_rawc,dt,dx,rcvdepth,ks);
%-------------压制前后  单道地震数据对比
nn = 80;
figure;plot(d_rawc(:,nn),'r');hold on; plot(d_raw_deghost(:,nn),'b');legend('压制前','压制后');
%-------------压制前后 地震剖面对比-----------------
figure; subplot(1,2,1);imagesc(xx,tt,d_rawc); 
colormap('redblue');caxis([-0.05,0.05]);
title('原始数据');ylabel('时间{\itt} / s');xlabel('距离{\itd} / m');
subplot(1,2,2);imagesc(xx,tt,d_raw_deghost);
colormap('redblue');caxis([-0.05,0.05]);
 title('鬼波压制后的数据'); ylabel('时间{\itt} / s');xlabel('距离{\itd} / m');
%--------------压制前后 地震数据fk谱对比------------------
ff = [0 150];       % 设置频率显示范围
kk = [-0.05,0.05];  % 设置波数显示范围
figure,subplot(1,2,1); imag_fk_spectrum(d_rawc,dt,dx,ff,kk);
title('原始数据');ylabel('频率{\itf} / Hz');xlabel('波数{\itk} / m');
caxis([0,0.5]);
subplot(1,2,2); imag_fk_spectrum(d_raw_deghost,dt,dx,ff,kk);
ylabel('频率{\itf} / Hz');xlabel('波数{\itk} / m');
title('鬼波压制后的数据');caxis([0,0.35]);

 

你可能感兴趣的:(地震鬼波压制技术,信号处理,matlab,算法)