解決したいこと
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])
まだ回答がついていません
会員登録して回答してみよう