请用python写一段人工地震波合成代码
时间: 2023-07-22 18:54:59 浏览: 210
用Python写一个模拟qq聊天小程序的代码实例
好的,以下是一个简单的Python代码示例,可以用来生成人工地震波:
```python
import numpy as np
import matplotlib.pyplot as plt
# 设置参数
npts = 1000 # 采样点数
dt = 0.01 # 采样间隔
f0 = 10 # 初始频率
t0 = 1/f0 # 初始时间
t = np.arange(npts)*dt
t -= t.max()/2 # 时间中心化
# 生成Ricker子波
t_shift = t-t0
ricker = (1-2*(np.pi*f0*t_shift)**2)*np.exp(-(np.pi*f0*t_shift)**2)
# FFT变换
freq = np.fft.fftfreq(npts, dt)
spectrum = np.fft.fft(ricker)
# 频率域滤波
spectrum *= np.exp(-(freq/f0)**2)
# 反变换回时域
filtered = np.real(np.fft.ifft(spectrum))
# 绘制波形
plt.figure()
plt.plot(t, filtered, 'k')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Synthetic Seismic Trace')
plt.show()
```
这段代码使用Ricker子波作为初始波形,并通过FFT变换和频率域滤波来生成地震波。您可以根据需要调整参数,例如采样点数、采样间隔、初始频率、初始时间等。
阅读全文