前言
地震事件的合成主要用于测试一些信号处理的方法,比如插值、去噪等。为了避免大家重复造轮子,这里介绍一下合成地震事件的方法。
线性地震事件合成步骤
前期准备
这里采用SAIG组开发的SeismicLab中公开的代码linear_events.m
来进行线性地震数据的合成,其中画图部分的wigb.m
也来自于该代码包。
由于该代码中默认是要添加随机噪音的,有时候我们并不需要添加随机噪音的数据,因此,我对源程序进行了修改,将添加噪音的部分删除了。
开始试验
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| clear;
close all;
dt = 0.004; % 时间间隔
dx = 20; % 道间距
nt = 512; % 总时间采样个数
tmax = (nt-1)*dt; % 记录最大时刻
f0 = 25; % 地震子波的主频
nx = 128; % 空间采样个数
h = [0:dx:dx*(nx-1)]; % 偏移距
tau = [0.4, 0.7, 1.8]; % 共三个地震事件,其值为事件与时间轴的交点的时刻
p = [1.6/max(h), 0.5/max(h), -1.3/max(h)]; % 三个地震事件的射线参数
amp = [1, 1, 1]; % 三个地震事件的振幅
% 合成三个地震事件,d
[d,h,t] = linear_events(dt,f0,tmax,h,tau,p,amp);
%%
figure;
wigb(d,1,h,t); % 用SeismicLab中的`wigb.m`函数绘制波形图
set(gca,'TickDir','out')
ax = gca;
ax.XAxisLocation = 'top';
xlabel('Distance (m)');
ylabel('Time (s)');
|
运行完上述代码后,得到的图形如下
双曲地震事件
前期准备
这里采用SAIG组开发的SeismicLab中公开的代码hyperbolic_events.m
来进行线性地震数据的合成。
由于该代码中默认是要添加随机噪音的,有时候我们并不需要添加随机噪音的数据,因此,我对源程序进行了修改,将添加噪音的部分删除了。
开始试验
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| clear;
close all;
%%
dt = 0.002; % 时间间隔
dx = 5; % 道间距
nt = 350; % 总时间采样个数
tmax = (nt-1)*dt; % 记录最大时刻
f0 = 30; % 地震子波的主频
nx = 80; % 空间采样个数
h = [0:dx:dx*(nx-1)]; % 偏移距
tau = [0.15, 0.28, 0.39]; % 共三个地震事件,其值为事件与时间轴的交点的时刻
v = [1500, 1750, 1800]; % 三个地震事件的速度
amp = [1, 1, 1]; % 三个地震事件的振幅
% 合成三个地震事件,d
[d,h,t] = hyperbolic_events(dt,f0,tmax,h,tau,v,amp);
figure;
wigb(d,1,1:length(h),t);
set(gca,'TickDir','out')
ax = gca;
ax.XAxisLocation = 'top';
xlabel('Trace');
ylabel('Time (s)');
|
运行完上述代码后,得到的图形如下