import numpy as np
import matplotlib.pyplot as plt
def ricker_wavelet(frequency, length, dt):
num_samples = int(length / dt) # 计算样本数量
t = np.linspace(-length / 2, length / 2, num_samples)
wavelet = (1 - 2 * (np.pi ** 2) * (frequency ** 2) * (t ** 2)) * np.exp(-(np.pi ** 2) * (frequency ** 2) * (t ** 2))
time_axis = np.arange(0, num_samples) * dt
return wavelet, time_axis
def convolution(reflection_coefficients, wavelet):
num_samples = len(reflection_coefficients)
num_wavelet_samples = len(wavelet)
output_length = num_samples + num_wavelet_samples - 1
convolution_result = np.convolve(reflection_coefficients, wavelet, mode='full')
output_time_axis = np.arange(0, output_length)
return convolution_result, output_time_axis
# 反射系数
reflection_coefficients = [0.3, -0.5, 0.7, -0.2, 0.1]
# 雷克子波参数
frequency = 25 # 频率
length = 0.128 # 波形长度(秒)
dt = 0.001 # 采样间隔(秒)
# 生成雷克子波
wavelet, time_axis = ricker_wavelet(frequency, length, dt)
# 进行褶积操作
convolution_result, output_time_axis = convolution(reflection_coefficients, wavelet)
# 绘制原始波形和褶积结果
plt.figure(figsize=(10, 6))
plt.subplot(2, 1, 1)
plt.plot(time_axis, wavelet)
plt.title('Ricker Wavelet')
plt.xlabel('Time (seconds)')
plt.ylabel('Amplitude')
plt.subplot(2, 1, 2)
plt.plot(output_time_axis, convolution_result)
plt.title('Convolution Result')
plt.xlabel('Time (samples)')
plt.ylabel('Amplitude')
plt.tight_layout()
plt.show()
#
Mavies123
- 粉丝: 8
- 资源: 1
最新资源
- 企业平台生态嵌入数据集(2000-2023年).xlsx
- 离线OCR(此软件解压后双击即可运行, 免费)
- 公开整理-上市公司员工学历及工资数据(1999-2023年).xlsx
- 公开整理-上市公司员工学历及工资数据集(1999-2023年).dta
- GDAL-3.4.3-cp38-cp38-win-amd64.whl(GDAL轮子-免编译pip直接装,下载即用)
- 基于Java实现WIFI探针的商业大数据分析技术
- 抖音5.6版本、抖音短视频5.6版、抖音iOS5.6版、抖音ipa包5.6
- 图像处理领域、QT技术、架构,可直接借鉴
- 【源码+数据库】基于Spring Boot+Mybatis+Thymeleaf实现的宠物医院管理系统
- H5漂流瓶交友源码 社交漂流瓶H5源码+对接Z支付+视频教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈