【问题标题】:x and y must have same first dimensionx 和 y 必须具有相同的第一维
【发布时间】:2017-10-23 03:06:45
【问题描述】:

我收到值错误:“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()

【问题讨论】:

  • 完整的回溯会更容易。尽管如此,考虑到331,267 * 2 == 662,534,这可能是两个序列被链接,而它们不应该链接,反之亦然......
  • 这个错误是不言自明的......
  • 您在下面输入的“答案”不是答案。如果您想提供更多详细信息,请edit您的问题。请注意,StackOverflow 不是论坛;它由问题和答案组成。请拨打tour。另外,不要忘记accept 解决您问题的答案。
  • 欢迎来到 StackOverflow,请阅读@ImportanceOfBeingErnest 提到的导览,它将指导您如何正确提问,以便您得到正确的答案:)
  • 对不起各位,新来的地方,我会阅读导览并进行更正。

标签: python numpy matplotlib scipy fft


【解决方案1】:

问题是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()

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2016-11-10
    • 2017-10-07
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多