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

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

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

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

Q&A

解決済

1回答

908閲覧

pythonで"NameError: name 'in_fft' is not defined"というエラーが出る

yu_89

総合スコア34

Python

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

0グッド

0クリップ

投稿2022/05/13 04:42

解決したいこと

gnuradioでpythonで書いた自作ブロックを試そうとしたところ、"NameError: name 'in_fft' is not defined"というエラーが出てしまいます。
調べて色々試したのですが、解決しません。何が原因なのでしょうか。わかる方がいましたら教えていただきたいです。よろしくお願いします。

発生している問題・エラーメッセージ

>>> Generating: '/home/nomo/gr-Kurtosis/kurtosis.py' Executing: /usr/bin/python3 -u /home/nomo/gr-Kurtosis/kurtosis.py handler caught exception: name 'in_fft' is not defined Traceback (most recent call last): File "/usr/lib/python3/dist-packages/gnuradio/gr/gateway.py", line 60, in eval try: self._callback() File "/usr/lib/python3/dist-packages/gnuradio/gr/gateway.py", line 218, in __gr_block_handle self.__message.work_args_return_value = self.work( File "/usr/local/lib/python3/dist-packages/Kurtosis/Kurtosis_p.py", line 44, in work in_fft[i][0] = self.inf[i].real NameError: name 'in_fft' is not defined thread[thread-per-block[2]: <block Kurtosis_p(3)>]: SWIG director method error. Error detected when calling 'feval_ll.eval'

該当のpythonのソースコード

Kurtosis_p.py

1import numpy as np 2from gnuradio import gr 3 4class Kurtosis_p(gr.sync_block): 5 """ 6 docstring for block Kurtosis_p 7 """ 8 def __init__(self, fftsize): 9 gr.sync_block.__init__(self, 10 name="Kurtosis_p", 11 in_sig=[np.complex64], 12 out_sig=None) 13 self.fftsize = fftsize 14 15 def work(self, input_items, output_items): 16 17 18 self.inf = input_items[0] 19 20 for i in range(self.fftsize): 21 22 in_fft[i][0] = self.inf[i].real 23 in_fft[i][1] = self.inf[i].imag 24 25 np.fft.fft(inf_fft) 26 27 for i in range(self.fftsize): 28 29 S1[i][0] = S1[i][0] + in_fft[i][0] 30 S1[i][1] = S1[i][1] + in_fft[i][1] 31 32 S2[i][0] = S2[i][0] + in_fft[i][0] ** 2 33 S2[i][1] = S2[i][1] + in_fft[i][1] ** 2 34 35 S3[i][0] = S3[i][0] + in_fft[i][0] ** 3 36 S3[i][1] = S3[i][1] + in_fft[i][1] ** 3 37 38 S4[i][0] = S4[i][0] + in_fft[i][0] ** 4 39 S4[i][1] = S4[i][1] + in_fft[i][1] ** 4 40 41 dc[i][0] = dc[i][0] + 1 42 dc[i][1] = dc[i][1] + 1 43 44 45 for i in range(self.fftsize): 46 47 Myu1[i][0] = S1[i][0] / dc[i][0]; 48 Myu1[i][1] = S1[i][1] / dc[i][1]; 49 50 Myu2[i][0] = S2[i][0] / dc[i][0]; 51 Myu2[i][1] = S2[i][1] / dc[i][1]; 52 53 Myu3[i][0] = S3[i][0] / dc[i][0]; 54 Myu3[i][1] = S3[i][1] / dc[i][1]; 55 56 Myu4[i][0] = S4[i][0] / dc[i][0]; 57 Myu4[i][1] = S4[i][1] / dc[i][1]; 58 59 for i in range(self.fftsize): 60 61 K[i][0] = (Myu4[i][0] - 4 * Myu3[i][0] * Myu1[i][0] + 6 * Myu2[i][0] * Myu1[i][0] **2 62 - 3 * Myu1[i][0] ** 4) / (Myu2[i][0] - Myu1[i][0] **2) ** 2 63 64 K[i][1] = (Myu4[i][1] - 4 * Myu3[i][1] * Myu1[i][1] + 6 * Myu2[i][1] * Myu1[i][1] **2 65 - 3 * Myu1[i][1] ** 4) / (Myu2[i][1] - Myu1[i][1] ** 2 ) ** 2 66 67 68 return len(input_items[0])

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

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

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

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

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

melian

2022/05/13 05:04

以下の様にする必要があります。以降の変数についても同様です。 in_fft = [] for i in range(self.fftsize): in_fft.append([self.inf[i].real, self.inf[i].imag]) しかし、 return len(input_items[0]) となっていますので、途中の計算は無意味ですが。。。
yu_89

2022/05/13 05:14

ご回答いただき、ありがとうございます。 早速、試してみます!
guest

回答1

0

自己解決

melianさんの助言どおりに
in_fft = []


とやったら出来ました。

投稿2022/05/26 02:23

yu_89

総合スコア34

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問