前提・実現したいこと
pythonを使ってCSVデータを読み取り、FFTをしたいと考えています。
発生している問題・エラーメッセージ
CSVデータを読み取るところまでは出来たのですが、エラーが出てしまい上手くFFTできません。
恐らく、次元が同じではないというエラーだと思うのですが修正方法が分かりません。
ValueError: x and y must have same first dimension, but have shapes (10000,) and (1, 10000)
該当のソースコード
Python
1import numpy as np 2import pandas as pd 3import matplotlib.pyplot as plt 4 5 6def main(): 7 8 ''''''''''''''' 9 #データのパラメータ 10 11 ''''''''''''''' 12 N= 10000 # サンプル数 13 dt = 0.00001 # サンプリング間隔:10μs 14 t = np.arange(0, N*dt, dt)#時間軸 15 freq = np.linspace(0, 1.0/dt, N) # 周波数軸 16 17 18 ''''''''''''''' 19 #エクセルから値を取得 20 21 ''''''''''''''' 22 # CSVファイルをpandasへ格納 23 # usercolで列を指定、skiplowsで行をスキップし読み込むことが出来る 24 df = pd.read_csv('C://***.CSV', header=None, usecols=[4, 5],skiprows=31) 25 dft=df.T 26 npx_array=np.array(dft[:1]) 27 npy_array=np.array(dft[:2]) 28 29 # 高速フーリエ変換 30 Fx = np.fft.fft(npx_array) 31 32 33 # 振幅スペクトルを計算 34 Amp = np.abs(Fx) 35 F_abs_amp=(Amp/N)*2 36 print(freq.shape) 37 print( F_abs_amp.shape) 38 plt.xlabel('freqency(Hz)', fontsize=14) 39 plt.ylabel('signal amplitude', fontsize=14) 40 plt.plot(freq, F_abs_amp[:int(N/2)+1]) 41 plt.show() 42 43if __name__ == "__main__": 44 main() 45
修正方法が分からず困っています。
よろしくお願い致します。
エラーが発生している行を、というかエラー文を省略せず全て記載お願いします。
回答1件
あなたの回答
tips
プレビュー