里克小波的相移
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()
我一直在努力解决 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()