【问题标题】:Phase shift of ricker wavelet里克小波的相移
【发布时间】:2020-11-04 15:51:06
【问题描述】:

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

【问题讨论】:

    标签: python signals signal-processing wavelet


    【解决方案1】:

    您可以使用Hilbert transform 获得信号的-90 度偏移。 这提供了一种通过analytic representation 获得其他相移的方法,由scipy.signal.hilbert 实现。一旦你有了这个解析信号,你“只需”乘以复相位项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()
    

    【讨论】:

    • 非常感谢,这正是我所需要的!
    • @Damir 我有一个后续查询,假设我已经得到了一个x度相移Ricker小波,我如何从小波中找到这个x度相移?
    • @QuamerNasim 它不太适合 cmets,但将其作为问题发布并回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多