前提・実現したいこと
周期的に変化するグラフをフーリエ変換したい
発生している問題・エラーメッセージ
TypeError: only size-1 arrays can be converted to Python scalars
該当のソースコード
Python3
import numpy as np from scipy import fftpack import matplotlib.pyplot as plt import pylab as plb x = np.arange(750, 950.1, 0.4) y = np.load('dac_0p4MHz_ampl_list.npy') plb.figure(figsize=(12,8)) plt.plot(x, y, marker='', linewidth=1) plt.xlabel('Frequency') plt.ylabel('Amplitude') plt.grid(linestyle=':') plt.show() yf = fftpack.fft(y)/(len(x)/2) freq = fftpack.fftfreq(len(x), 1) fs = 0.05 yf2 = np.copy(yf) yf2[(freq > fs)] = 0 yf2[(freq < 0.02)] = 0 y2 = np.real(fftpack.ifft(yf2)*len(x)) plt.rcParams['font.family'] = 'Times New Roman' plb.figure(figsize=(12,12)) plt.figure(1) plt.subplot(311) plt.plot(freq[1:int(len(x)/2)], np.abs(yf[1:int(x)/2])) <= ここでエラーが発生する。 plt.xlabel('Frequency[Hz]') # Hz? plt.ylabel('Amplitude') plt.axis('tight')
試したこと
以前同じような解析をやっていたので、その時のコードの細かい部分を変更して作ったのが上記のコードです。
何度も元コードと違いが無いかを検討しましたが、大きな間違いなどはありませんでした。
補足情報(FW/ツールのバージョンなど)
python (3.6.1)
Anaconda (4.4.0)
numpy (1.14.3)
scipy (0.19.0)
matplotlib (2.0.2)
まだ回答がついていません
会員登録して回答してみよう