解決したいこと
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])
回答1件
あなたの回答
tips
プレビュー