csvからデータを読み込み,fftを行い,データを出力したいです.
58行目のc列からf列まで順にfftを行いたいです。
サンプリング時間は0から8.192秒で、サンプリング周期は0.0005秒です.
プログラムを以下のように作成してみたのですが,動作はするものの,
・出力が一セルにされてしまう
・4行分出力がされない
この2点で悩んでいます.
ある方からプログラムをいただき,自分の用途にあうように改良していたのですがわからなくなってしまいました.
どのようにしたら解決するか教えていただきたいです.
超初心者で申し訳ございません。。。
import cv2 import numpy as np import matplotlib.pyplot as plt import csv import glob import pandas as pd ##### 実験条件、分析対象の設定 ###### t = np.arange(0,8.192,0.0005) #サンプリング時間,周波数の指定(開始時間(=0),終了時間,サンプリング周期) file = '0.73' #分析対象のファイル指定 ##### データの読み込み、ドリフトの除去 ##### j=0 def loadvtp(file,j): #ファイルの読み込みに使用する関数の定義 vtp = pd.read_csv(file+'.csv', dtype='float', skiprows=57, usecols=[j+3], nrows=16384, engine='python', header=None) #解析対象となるデータの読み込み vtp = vtp - np.mean(vtp) #平均を引く vtp = np.squeeze(vtp) return vtp ##### 主流(x)成分出力の計算 ##### vx = loadvtp(file,j) ##### FFT ##### freq = np.fft.fftfreq(16384, 1/2000) #周波数軸の生成(サンプリング点数, サンプリング周期) f = np.fft.fft(vx) #FFT f[0]=f[0]/2 #定常成分を1/2にする(スケーリングに必要) amp = np.abs(f)/(16384/2) #FFT結果を振幅に合わせてスケーリング freq = freq[0:16384] #周波数軸の対称成分を除く amp = amp[0:16384] #振幅の対称成分を除く print(np.mean(vx), amp[0]) plt.figure() plt.plot(t, vx) with open('FFT.csv', 'w') as f: writer = csv.writer(f, lineterminator='\n') #行末は改行 writer.writerow([amp])
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。