def input(x): a1, a2, a3, a4, a5, a6, a7, a8, a9,a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45 = [x.iloc[250*3*i:256+250*3*i,0:8] for i in range(45)] return (a1, a2, a3, a4, a5, a6, a7, a8, a9,a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45) # フーリエ変換(正規化) def fft(data, N, fs): dt = 1 /fs X = np.fft.fft(data) freq = np.linspace(0, 1.0/dt, N) # 周波数軸 amplitudeSpectrum = [np.sqrt(c.real ** 2 + c.imag ** 2) for c in X] amplitudeSpectrum[0] = 0 n = sum(amplitudeSpectrum) for i in range(len(amplitudeSpectrum)): amplitudeSpectrum[i] = amplitudeSpectrum[i]/n amplitudeSpectrum = np.array(amplitudeSpectrum) amplitudeSpectrum = amplitudeSpectrum[np.logical_and(freq>=4.0, freq<32.0)] return(amplitudeSpectrum) def get_train(data): features_df = pd.DataFrame() """ for i in range(8): x = fft(data.iloc[:, i],len(data), 250) features_df.loc[:, i] = x """ x = fft(data.iloc[:, 0],len(data), 250) features_df.loc[:, 0] = x x = np.array(features_df) #print(x.shape) #x = x.reshape(1,224).astype('float32') return(x) a1, a2, a3, a4, a5, a6, a7, a8, a9,a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45 = input(a01) data_list = [a1, a2, a3, a4, a5, a6, a7, a8, a9,a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45] for data in data_list: data = get_train(data) print(len(data)) print(len(a1))
get_trainでフーリエ変換をして、データ数を256から28にしたいと考えています。
しかし、このコードではfor文の中ではデータ数が28なのに対して、for文の外になると256のままです。
どのようにしたら改善されるでしょうか。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。