高精度时频可调Ricker子波生成算法(Python)

作品简介

整个算法从用户输入参数开始,首先智能处理默认值设置,当用户未指定峰值位置时,自动计算理论最优位置(1/f)。接着创建时间向量,覆盖从负半周期到正半周期的完整波形范围。根据时间偏移参数t0调整波形中心位置,确保峰值准确落在指定时间点。对于一维子波生成,采用经典Ricker公式计算每个时间点的振幅值,该公式由两部分组成:第一部分是抛物线型包络函数,控制波形整体形态;第二部分是指数衰减项,决定波形的振荡特性。两部分相乘得到具有典型"钟形"特征的子波。当需要生成二维子波时,算法自动扩展为网格计算,在二维时间平面上计算每个点的振幅值,形成对称的二维波形结构。最后,算法提供自动可视化功能,对于一维子波直接绘制时域波形图,清晰展示主瓣和旁瓣特征;对于二维子波则生成热力图,直观显示波形在二维平面上的能量分布。整个流程实现了从参数输入到波形生成再到可视化输出的完整闭环,满足地震勘探、信号处理等领域对高质量标准子波的需求。

核心算法步骤

参数初始化

接收用户输入的主频、点数、时间间隔等参数

自动计算未指定参数的默认值

确定子波是一维还是二维生成模式

时间向量构建

根据点数和时间间隔计算总时长

创建对称的时间向量(从负半周期到正半周期)

计算时间偏移量(实际时间与峰值位置的差值)

子波核心计算

一维模式:

计算二次项:(1 - (τ² * f² * 2π²))

计算指数衰减项:exp(-τ² * π² * f²)

两项相乘得到最终波形

二维模式:

创建二维时间网格

计算径向距离平方:r² = τ₁² + τ₂²

应用二维Ricker公式计算每个网格点振幅

智能可视化

一维子波:

绘制时域波形图

标注坐标轴和标题

添加网格线增强可读性

二维子波:

生成振幅热力图

使用地震色谱(蓝-白-红)直观显示正负振幅

添加颜色刻度条作为参考

结果输出

返回子波振幅数组和时间向量

保持与输入参数一致的维度

确保输出可直接用于后续信号处理

 1.所有代码均经过运行测试,没有问题。 

2.拍前请仔细阅读作品简介,这非常重要,因为涉及到不同的编程语言(Python或matlab)。

3.程序为特殊商品,经售出不退,有问题请及时联系。

4.建议有一定Python或Matlab基础的同学或工程师购买。

5.该代码不讲解哦。

创作时间: