我正在使用我在此处找到的代码来计算具有恒定频率的正弦波的小波变换。
#!/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 轴)信号的频率?

