里克小波的相移

Phase shift of ricker wavelet

我一直在努力解决 Ricker 小波的相移

from scipy import signal
import matplotlib.pyplot as plt

x = 100
a = 10
vec2 = signal.ricker(x, a)
print(len(vec2))

plt.plot(vec2)
plt.show()

我找不到如何通过signal.ricker函数来实现,所以我重新创建了原始小波。

x1 = np.arange(-50,50,1)
wavelet = []
a = 10
A = 2/(sqrt(3*a)*(pi**0.25))

for i in x1:
    i = A * (1 - (i/a)**2) * exp(-0.5*(i/a)**2)
    wavelet.append(i)
plt.plot(wavelet)
plt.show()

那么我如何才能旋转小波,例如 90 度 偏移?

您可以使用 Hilbert transform 获得 -90 度的信号偏移。 这提供了一种通过 analytic representation, implemented by scipy.signal.hilbert 获得其他相移的方法。获得此解析信号后,您 'simply' 必须乘以复相位项 exp(1j*np.radians(angle)),并提取实部:

N = 100
a = 10
x = np.arange(0,N)-0.5*(N-1)
wavelet = signal.ricker(N, a)

plt.plot(x,wavelet,label='wavelet')

angle = 90
shifted = np.real(np.exp(1j*np.radians(angle)) * signal.hilbert(wavelet))
plt.plot(x,shifted,label='90º shift')

plt.show()