質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1057閲覧

Pythonで関数を作ったが代入されなくて困っています。

gymgym

総合スコア97

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/01/22 09:14

編集2018/01/22 09:32

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakame

2018/01/22 09:26

x1が定義されていないようですが。
gymgym

2018/01/22 09:32

申し訳ございません。省略していました。
can110

2018/01/22 09:38

正しい結果は具体的にどのような値になりますか?
gymgym

2018/01/22 09:43

FFT変換して、パワースペクトルを求めています。求めたパワースペクトルを用いて、3から5Hz帯のパワースペクトルと全体のパワースペクトルの合計の比を求めたいと考えています。
can110

2018/01/22 09:47

つまり、提示された入力データの場合、具体的にはどのような値が得られるのでしょうか?また、fft関数に渡している各引き数をprintした結果、およびそれが意図した値であるか(そうでなければどう違うのか)を追記ください。
gymgym

2018/01/22 09:56

丁寧にご質問して頂いたのに申し訳ないないのですが、修正を加えたらうまく実行できました。ありがとうございました!
can110

2018/01/22 10:01

解決されてよかったです。今後同じような問題の解決に役に立つよう、自己回答をお勧めします。
gymgym

2018/01/22 10:04

了解です!ありがとうございます。
guest

回答1

0

自己解決

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] n = sum(amplitudeSpectrum) for i in range(len(amplitudeSpectrum)): amplitudeSpectrum[i] = amplitudeSpectrum[i]/n amplitudeSpectrum = np.array(amplitudeSpectrum) Spectrum = amplitudeSpectrum[np.logical_and(freq>=4.0, freq<32)] am_sum = sum(Spectrum) a = amplitudeSpectrum[np.logical_and(freq>=3.0, freq<5)] p = a / am_sum return(p) def main(): colum_name=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] x = pd.read_csv("train.txt", index_col=0, header=None, names=colum_name) x1 = x.ix[6:, :8] x1 = x1[:,1] a1 = fft(x1, len(x1), 250) print(a1) if __name__ == '__main__': main()

投稿2018/01/22 10:11

編集2018/01/22 16:10
gymgym

総合スコア97

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KSwordOfHaste

2018/01/22 11:40

せっかくコードを載せておられるのですから質問文と同様コード用のマークアップで囲むようにしていただきたいと思います。4行目で多分 sqrt(c.real ** 2 + c.imag ** 2) と書いておられると思います。コード用マークアップで囲んでないので**は強調文字を表すマークアップとして解釈されてしまってます・・・
gymgym

2018/01/22 16:10

ご指摘ありがとうございます。 これから気をつけます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問