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 ##### def loadvtp(file): #ファイルの読み込みに使用する関数の定義 vtp = pd.read_csv(file+'.csv', dtype='float', skiprows=57, usecols=[3], nrows=16384, engine='python', header=None) #解析対象となるデータの読み込み vtp = vtp - np.mean(vtp) #平均を引く vtp = np.squeeze(vtp) return vtp ##### 主流(x)成分出力の計算 ##### y = loadvtp(file) ##### FFT ##### freq = np.fft.fftfreq(16384, 1/2000) #周波数軸の生成(サンプリング点数, サンプリング周期) f = np.fft.fft(y) #FFT f[0]=f[0]/2 #定常成分を1/2にする(スケーリングに必要) ampy = np.abs(f)/(16384/2) #FFT結果を振幅に合わせてスケーリング freq = freq[0:16384] #周波数軸の対称成分を除く ampy = ampy[0:16384] #振幅の対称成分を除く ##### データの読み込みx ##### def loadvtp(file): #ファイルの読み込みに使用する関数の定義 vtp = pd.read_csv(file+'.csv', dtype='float', skiprows=57, usecols=[4], nrows=16384, engine='python', header=None) #解析対象となるデータの読み込み vtp = vtp - np.mean(vtp) #平均を引く vtp = np.squeeze(vtp) return vtp ##### 主流(x)成分出力の計算 ##### x = loadvtp(file) ##### FFT ##### f = np.fft.fft(x) #FFT f[0]=f[0]/2 #定常成分を1/2にする(スケーリングに必要) ampx = np.abs(f)/(16384/2) #FFT結果を振幅に合わせてスケーリング ampx = ampx[0:16384] #振幅の対称成分を除く ##### データの読み込みV ##### def loadvtp(file): #ファイルの読み込みに使用する関数の定義 vtp = pd.read_csv(file+'.csv', dtype='float', skiprows=57, usecols=[5], nrows=16384, engine='python', header=None) #解析対象となるデータの読み込み vtp = vtp - np.mean(vtp) #平均を引く vtp = np.squeeze(vtp) return vtp ##### 主流(x)成分出力の計算 ##### V = loadvtp(file) ##### FFT ##### f = np.fft.fft(V) #FFT f[0]=f[0]/2 #定常成分を1/2にする(スケーリングに必要) ampV = np.abs(f)/(16384/2) #FFT結果を振幅に合わせてスケーリング ampV = ampV[0:16384] #振幅の対称成分を除く ##### データの読み込みwave ##### def loadvtp(file): #ファイルの読み込みに使用する関数の定義 vtp = pd.read_csv(file+'.csv', dtype='float', skiprows=57, usecols=[6], nrows=16384, engine='python', header=None) #解析対象となるデータの読み込み vtp = vtp - np.mean(vtp) #平均を引く vtp = np.squeeze(vtp) return vtp ##### 主流(x)成分出力の計算 ##### wave = loadvtp(file) ##### FFT ##### f = np.fft.fft(wave) #FFT f[0]=f[0]/2 #定常成分を1/2にする(スケーリングに必要) ampwave = np.abs(f)/(16384/2) #FFT結果を振幅に合わせてスケーリング ampwave = ampwave[0:16384] #振幅の対称成分を除く df = [freq, ampy, ampx, ampV, ampwave] pd.DataFrame(df).to_csv('FFT.csv', index=None)
csvからデータを読み込み,fftをし,csvまたはExcelに出力したいです
開始時間が0秒,終了時間が8.192秒
時間刻みは0.0005秒
サンプリング点数は16384点
です.
58行目の3列目から6列目までの解析を行いたいのですが、
PROBLEM WITH THONNY'S BACK-END:
と出てしまいました.
usecolsをすべて=3とすればなぜか動きました.
また,出力が1行目に0.1.2.3....と続き,2行目に周波数,3行目から6行目に結果が出力されてしまいます.
列出力に直すにはどうしたらよろしいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/17 04:09