连续小波变换中高频相位信息

信息处理 频谱 小波 Python
2022-02-26 05:24:10

我正在使用我在此处找到的代码来计算具有恒定频率的正弦波的小波变换。

#!/usr/bin/python2

from pylab import *
import matplotlib.pyplot as plt
import numpy as np
import scipy

x = np.linspace(0, 10, 65536)
y = np.sin(2 * pi * 60 * x)
N = len(y)
Y = np.fft.fft(y)

J = 128
scales = np.asarray([2 ** (i * 0.1) for i in range(J)])

morletft = np.zeros((J, N))
for i in range(J):
    morletft[i][:N/2] = sqrt(2 * pi * scales[i]) * exp(-(scales[i] * 2 * pi * scipy.array(range(N/2)) / N - 2) ** 2 / 2.0)

U = empty((J, N), dtype=complex128)
for i in range(J):
    U[i] = np.fft.ifft(Y * morletft[i])

plt.imshow(abs(U[:,scipy.arange(0,N,1)]), interpolation='none', aspect='auto')
plt.title("Sine Wave")
plt.xlabel("Translation")
plt.ylabel("Scale")
plt.show()

结果看起来还不错。 好的

我真正感兴趣的是相位。我使用以下代码从上面的代码中提取相位:

imshow(np.unwrap(np.angle(U)), aspect='auto')

它看起来像这样:

为什么相位信息的频率高于(或低于,注意:倒置的 y 轴)信号的频率?

1个回答

正如你所看到的,还有比你原来的频率更高的能量。这可能是因为小波的每一级都有一个波段,所以小波可以在更高的频率显示能量。

只要有能量,相位就存在……所以它直接连接到它。您可以查看光谱上的数据是否仅存在于光谱中非零能量的位置。