ricker小波的相移

2024-06-16 11:50:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力解决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度移位


Tags: fromimportsignalplotmatplotlibasshowplt
1条回答
网友
1楼 · 发布于 2024-06-16 11:50:43

您可以使用Hilbert transform获得信号的-90度偏移。 这提供了一种通过由^{}实现的analytic representation获得其他相移的方法。一旦你有了这个分析信号,你“简单地”必须乘以复相位项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()

enter image description here

相关问题 更多 >