python
1 2def fft(data, N, fs): 3 dt = 1 /fs 4 X = np.fft.fft(data) 5 freq = np.linspace(0, 1.0/dt, N) # 周波数軸 6 amplitudeSpectrum = [np.sqrt(c.real ** 2 + c.imag ** 2) for c in X] 7 n = sum(amplitudeSpectrum) 8 for i in range(len(amplitudeSpectrum)): 9 amplitudeSpectrum[i] = amplitudeSpectrum[i]/n 10 11 amplitudeSpectrum = np.array(amplitudeSpectrum) 12 Spectrum = amplitudeSpectrum[np.logical_and(freq>=4.0, freq<32)] 13 am_sum = sum(Spectrum) 14 a = amplitudeSpectrum[np.logical_and(freq>=3.0, freq<5)] 15 p = a / am_sum 16 17 return(p) 18 19 20def main(): 21 colum_name=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] 22 x = pd.read_csv("train.txt", index_col=0, header=None, names=colum_name) 23 x1 = x.ix[6:, :8] 24 x1 = x1.iloc[:,1] 25 a1 = fft(x1, len(x1), 250) 26 print(a1) 27 28if __name__ == '__main__': 29 main()
以上のコードを実行すると、
[]
何も代入されません。
原因は何でしょうか。
よろしくお願い致します。
#x1 101 -20812.89 102 -20275.09 103 -19334.97 104 -19581.76 105 -20692.89 106 -20485.84 107 -19396.51 108 -19454.29 109 -20494.94 110 -20657.73 111 -19500.27 112 -19362.62 113 -20287.09 114 -20794.32 115 -19657.73 116 -19313.83 117 -20085.21 118 -20877.06 119 -19858.21 120 -19296.13 121 -19887.96 122 -20880.04 123 -20106.42 124 -19322.12 125 -19713.95 126 -20814.50 127 -20332.69 128 -19354.26 129 -19566.65 130 -20677.91 131 -20551.18 132 -19443.20
x1が定義されていないようですが。
申し訳ございません。省略していました。
正しい結果は具体的にどのような値になりますか?
FFT変換して、パワースペクトルを求めています。求めたパワースペクトルを用いて、3から5Hz帯のパワースペクトルと全体のパワースペクトルの合計の比を求めたいと考えています。
つまり、提示された入力データの場合、具体的にはどのような値が得られるのでしょうか?また、fft関数に渡している各引き数をprintした結果、およびそれが意図した値であるか(そうでなければどう違うのか)を追記ください。
丁寧にご質問して頂いたのに申し訳ないないのですが、修正を加えたらうまく実行できました。ありがとうございました!
解決されてよかったです。今後同じような問題の解決に役に立つよう、自己回答をお勧めします。
了解です!ありがとうございます。
回答1件
あなたの回答
tips
プレビュー