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

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

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

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

受付中

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

yu_89
yu_89

総合スコア13

Python

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

0回答

0評価

0クリップ

73閲覧

投稿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

import numpy as np from gnuradio import gr class Kurtosis_p(gr.sync_block): """ docstring for block Kurtosis_p """ def __init__(self, fftsize): gr.sync_block.__init__(self, name="Kurtosis_p", in_sig=[np.complex64], out_sig=None) self.fftsize = fftsize def work(self, input_items, output_items): self.inf = input_items[0] for i in range(self.fftsize): in_fft[i][0] = self.inf[i].real in_fft[i][1] = self.inf[i].imag np.fft.fft(inf_fft) for i in range(self.fftsize): S1[i][0] = S1[i][0] + in_fft[i][0] S1[i][1] = S1[i][1] + in_fft[i][1] S2[i][0] = S2[i][0] + in_fft[i][0] ** 2 S2[i][1] = S2[i][1] + in_fft[i][1] ** 2 S3[i][0] = S3[i][0] + in_fft[i][0] ** 3 S3[i][1] = S3[i][1] + in_fft[i][1] ** 3 S4[i][0] = S4[i][0] + in_fft[i][0] ** 4 S4[i][1] = S4[i][1] + in_fft[i][1] ** 4 dc[i][0] = dc[i][0] + 1 dc[i][1] = dc[i][1] + 1 for i in range(self.fftsize): Myu1[i][0] = S1[i][0] / dc[i][0]; Myu1[i][1] = S1[i][1] / dc[i][1]; Myu2[i][0] = S2[i][0] / dc[i][0]; Myu2[i][1] = S2[i][1] / dc[i][1]; Myu3[i][0] = S3[i][0] / dc[i][0]; Myu3[i][1] = S3[i][1] / dc[i][1]; Myu4[i][0] = S4[i][0] / dc[i][0]; Myu4[i][1] = S4[i][1] / dc[i][1]; for i in range(self.fftsize): K[i][0] = (Myu4[i][0] - 4 * Myu3[i][0] * Myu1[i][0] + 6 * Myu2[i][0] * Myu1[i][0] **2 - 3 * Myu1[i][0] ** 4) / (Myu2[i][0] - Myu1[i][0] **2) ** 2 K[i][1] = (Myu4[i][1] - 4 * Myu3[i][1] * Myu1[i][1] + 6 * Myu2[i][1] * Myu1[i][1] **2 - 3 * Myu1[i][1] ** 4) / (Myu2[i][1] - Myu1[i][1] ** 2 ) ** 2 return len(input_items[0])

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python

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