x和y必须具有相同的第一维

时间:2017-05-23 08:53:11

标签: python numpy matplotlib scipy fft

我得到了价值错误:" x和y必须具有相同的第一维,但有形状(662534,)和(331267,2)" 我的代码

from scipy import signal
import scipy as sy
import scipy.fftpack as syfp
import numpy as np
import matplotlib.pyplot as plt
array = np.loadtxt("file1.csv", dtype = np.float, usecols = (0,1), delimiter = ',')
lenght =len(array)
x = sy.linspace(0.00001, lenght*0.00001, num=lenght)
FFT = syfp.fft(array)
freqs = syfp.fftfreq(array.size, d=(x[1]-x[0]))
plt.subplot(211)
plt.plot(x, array)
plt.subplot(212)
plt.plot(freqs, sy.log10(FFT), 'x')
plt.show()

1 个答案:

答案 0 :(得分:2)

问题是FFTfreqs具有不同的维度,您可以使用flatten将FFT格式化为一个维度:

from scipy import signal
import scipy as sy
import scipy.fftpack as syfp
import numpy as np
import matplotlib.pyplot as plt
array = np.loadtxt("file1.csv", dtype = np.float, usecols = (0,1), delimiter = ',')
lenght =len(array)
x = sy.linspace(0.00001, lenght*0.00001, num=lenght)

FFT = syfp.fft(array)

FFT =  FFT.flatten()
print FFT.shape
freqs = syfp.fftfreq(array.size, d=(x[1]-x[0]))
print freqs.shape
plt.subplot(211)
plt.plot(x, array)
plt.subplot(212)
plt.plot(freqs, sy.log10(FFT), 'x')
plt.show()