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' #分析対象のファイル指定 ##### データの読み込みy ##### for i in range(4): print(i) def loadvtp(file,i): #ファイルの読み込みに使用する関数の定義 vtp = pd.read_csv(file+'.csv', dtype='float', skiprows=57, usecols=[i+2], nrows=16384, engine='python', header=None) #解析対象となるデータの読み込み vtp = vtp - np.mean(vtp) #平均を引く vtp = np.squeeze(vtp) return vtp ##### 主流(x)成分出力の計算 ##### vx = loadvtp(file,i) ##### 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//2] #周波数軸の対称成分を除く amp = amp[0:16384//2] #振幅の対称成分を除く if i==0: yav=vx xav="" vav="" wav="" y=amp x="" v="" w="" elif i==1: yav=yav xav=vx vav="" wav="" y=y x=amp v="" w="" elif i==2: yav=yav xav=xav vav=vx wav="" y=y x=x v=amp w="" elif i==3: yav=yav xav=xav vav=vav wav=vx y=y x=x v=v w=amp print(y) print(x) print(v) print(w) df = [t, yav, xav, vav, wav, freq, y, x, v, w] df=pd.DataFrame(df).T df.to_csv('FFT.csv', index=None)
fftをするために上記のコードを作成しました.
上記のプログラムは問題なく動きます.
今回やりたいことは,上記のコードの改良です.
フォルダ内にあるcsvファイルを順番にfftをかけれるようにしたいです.
globを使用すればできるのかなとも思いましたが,いまいちわからなくなってしまいました.
そこでこのプログラムの改良方法を教えていただきたいです。
出来れば結果は一つのcsvまたはエクセルにまとめたいのですが可能でしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/17 11:05
2021/06/17 11:25
2021/06/17 14:13