前提・実現したいこと
現在、FFTプログラムを作成しています。
n個(n=1,2,3,.....)のデータを一つのグラフに重ねてプロットしたいと思い、for文を用いて試みているのですが、うまく実行することが出来ません。
現在のソースコードは該当ソースコードのようになっています。
ご教授して頂けると幸いです。
発生している問題・エラーメッセージ
TypeError Traceback (most recent call last) <ipython-input-106-3b91932838c2> in <module> 61 62 plt.figure(figsize=(6,4)) ---> 63 plt.plot(fq[:int(N/2)+1],Data[:int(N/2)+1],color=colorlist(range(1,j+1))) 64 plt.title(str(n)+"回目") 65 plt.xlabel("frequency[Hz]",fontsize=14) TypeError: 'int' object is not callable
該当のソースコード
Python
1import numpy as np 2import pandas as pd 3import os 4import matplotlib.pyplot as plt 5 6file_name = input("Please input filename:") 7Sampling_frequency = int(input("Please input Sampling_frequency: ")) 8Number_of_iterations = int(input("Please input Number_of_iterations:")) 9 10#読み込んだデータの次元確認 11print("配列の次元:\n"+str(data.ndim)) 12print("配列次元変更後:\n"+str(data2.ndim)) 13 14#データ数 15N=len(data) 16print("サンプル数:\n"+str(N)) 17 18#サンプリング周波数 19fs=Sampling_frequency 20print("サンプリング周波数:\n"+str(fs)) 21 22#窓関数 23window=np.hamming(N) 24 25#窓関数の補正値 26acf=(1/(sum(window)/N)) 27print("窓関数適用後のスペクトル補正値:\n"+str(acf)) 28 29#時間軸のデータ作成 30t=np.arange(0,N*(1/fs),1/fs) 31 32#周波数軸のデータ作成 33fq=np.linspace(0,fs,N) #周波数軸 linspace(開始,終了,分割数) 34 35#線色のリスト 36color_list=["black","gray","lightcoral","brown","darkred","red","tomato","sienna","sandybrown","darkorange","tan","gold","darkkhaki" 37 ,"yellowgreen","olivedrab","darkturquoise","lightblue" 38 ,"steelblue","cornflowerblue","navy","blue","indigo","darkviolet","purple","magenta","crimson","lightpink"] 39 40colorlist=len(color_list) 41 42for n in range(1,Number_of_iterations+1): 43 for j in range(0,colorlist): 44 #データの読み込み 45 data=pd.read_csv(os.path.join(r"Z:/private/結果/",file_name),header=None,usecols=list(range(1,n+1)),names=[f"{n}回目" for n in range(1,n+1)]) 46 47 #2次元配列から1次元配列に変更 48 data2=data[str(n)+"回目"].values 49 50 #窓関数後の信号 51 data_w=window*data2 52 53 #読み込んだデータをフーリエ変換 54 data_w_FFT=np.fft.fft(data_w) 55 56 #FFTの複素数結果を絶対値に変換 57 data_w_FFT_abs=abs(data_w_FFT) 58 59 #窓補正 60 Data=(data_w_FFT_abs)*acf 61 print(Data) 62 63 plt.figure(figsize=(6,4)) 64 plt.plot(fq[:int(N/2)+1],Data[:int(N/2)+1],color=colorlist(range(1,j+1))) 65 plt.title(str(n)+"回目") 66 plt.xlabel("frequency[Hz]",fontsize=14) 67 plt.ylabel("signal intensity",fontsize=14) 68 plt.xlim(0,2000) 69 plt.show() 70