解決したいこと
gnuradio の自作ブロックを作っているのですが、コンパイル時に'dose not name a type'というエラーが出てしまいます。
調べて色々試したのですが、解決しません。何が原因なのでしょうか。
発生している問題・エラーメッセージ
error: ‘Ki’ does not name a type 118 | Ki[i][1] = (Myu4i[i][1] - 4 * Myu3i[i][1] * Myu1i[i][1] + 6 * Myu2i[i][1] * Myu1i[i][1] * Myu1i[i][1] | ^~
該当のソースコード
Kurtosis_c1_impl.h
1#ifndef INCLUDED_KURTOSIS1_KURTOSIS_C1_IMPL_H 2#define INCLUDED_KURTOSIS1_KURTOSIS_C1_IMPL_H 3 4#include <Kurtosis1/Kurtosis_c1.h> 5#include <fftw3.h> 6 7namespace gr { 8 namespace Kurtosis1 { 9 10 class Kurtosis_c1_impl : public Kurtosis_c1 11 { 12 private: 13 int d_N; 14 15 16 fftw_complex* Kr; 17 fftw_complex* Ki; 18 fftw_complex* S1r; 19 fftw_complex* S1i; 20 fftw_complex* S2r; 21 fftw_complex* S2i; 22 fftw_complex* S3r; 23 fftw_complex* S3i; 24 fftw_complex* S4r; 25 fftw_complex* S4i; 26 fftw_complex* Myu1r; 27 fftw_complex* Myu1i; 28 fftw_complex* Myu2r; 29 fftw_complex* Myu2i; 30 fftw_complex* Myu3r; 31 fftw_complex* Myu3i; 32 fftw_complex* Myu4r; 33 fftw_complex* Myu4i; 34 fftw_complex* dcnt; 35 36 fftw_complex* d_inputr; 37 fftw_complex* d_inputi; 38 fftw_plan d_plan; 39 40 public: 41 Kurtosis_c1_impl(int fftsize); 42 ~Kurtosis_c1_impl(); 43 44 45 // Where all the action really happens 46 int work( 47 int noutput_items, 48 gr_vector_const_void_star &input_items, 49 gr_vector_void_star &output_items 50 ); 51 }; 52 53 } // namespace Kurtosis1 54} // namespace gr 55 56#endif /* INCLUDED_KURTOSIS1_KURTOSIS_C1_IMPL_H */ 57
Kurtosis_c1_impl.cc
1#ifdef HAVE_CONFIG_H 2#include "config.h" 3#endif 4 5#include <gnuradio/io_signature.h> 6#include "Kurtosis_c1_impl.h" 7 8namespace gr { 9 namespace Kurtosis1 { 10 11 Kurtosis_c1::sptr 12 Kurtosis_c1::make(int fftsize) 13 { 14 return gnuradio::get_initial_sptr 15 (new Kurtosis_c1_impl(fftsize)); 16 } 17 18 19 /* 20 * The private constructor 21 */ 22 Kurtosis_c1_impl::Kurtosis_c1_impl(int fftsize) 23 : gr::sync_block("Kurtosis_c1", 24 gr::io_signature::make(1, 1, sizeof(gr_complex)), 25 gr::io_signature::make(0, 0, 0)), 26 d_N(fftsize) 27 { 28 d_inputr = d_inputi = (fftw_complex*)fftw_malloc(sizeof(gr_complex) * d_N); 29 Kr = Ki = (fftw_complex*)fftw_malloc(sizeof(gr_complex) * d_N); 30 d_plan = fftw_plan_dft_1d(d_N, d_inputr, d_inputi, FFTW_BACKWARD, FFTW_ESTIMATE); 31 } 32 33 /* 34 * Our virtual destructor. 35 */ 36 Kurtosis_c1_impl::~Kurtosis_c1_impl() 37 { 38 } 39 40 int 41 Kurtosis_c1_impl::work(int noutput_items, 42 gr_vector_const_void_star &input_items, 43 gr_vector_void_star &output_items) 44 { 45 const gr_complex *in = (const gr_complex*) input_items[0]; 46 47 for(int i = 0; i < noutput_items; i++) 48 { 49 d_inputr[i][0] = in[i].real(); 50 d_inputi[i][1] = in[i].imag(); 51 } 52 53 fftw_execute(d_plan); 54 55 for(int i = 0; i < noutput_items ;i++) 56 { 57 S1r[i][0] = S1r[i][0] + d_inputr[i][0]; 58 S1i[i][1] = S1i[i][1] + d_inputi[i][1]; 59 60 S2r[i][0] = S2r[i][0] + d_inputr[i][0] * d_inputr[i][0]; 61 S2i[i][1] = S2i[i][1] + d_inputi[i][1] * d_inputi[i][1]; 62 63 S3r[i][0] = S3r[i][0] + d_inputr[i][0] * d_inputr[i][0] * d_inputr[i][0]; 64 S3i[i][1] = S3i[i][1] + d_inputi[i][1] * d_inputi[i][1] * d_inputi[i][1]; 65 66 S4r[i][0] = S4r[i][0] + d_inputr[i][0] * d_inputr[i][0] * d_inputr[i][0] * 67 d_inputr[i][0]; 68 S4i[i][1] = S4i[i][1] + d_inputi[i][1] * d_inputi[i][1] * d_inputi[i][1] * 69 d_inputi[i][1]; 70 71 dcnt[i][0] = dcnt[i][0] + 1; 72 dcnt[i][1] = dcnt[i][1] + 1; 73 } 74 75 for(int i = 0; i < noutput_items; i++) 76 { 77 Myu1r[i][0] = S1r[i][0] / dcnt[i][0]; 78 Myu1i[i][1] = S1i[i][1] / dcnt[i][1]; 79 80 Myu2r[i][0] = S2r[i][0] / dcnt[i][0]; 81 Myu2i[i][1] = S2i[i][1] / dcnt[i][1]; 82 83 Myu3r[i][0] = S3r[i][0] / dcnt[i][0]; 84 Myu3i[i][1] = S3i[i][1] / dcnt[i][1]; 85 86 Myu4r[i][0] = S4r[i][0] / dcnt[i][0]; 87 Myu4i[i][1] = S4i[i][1] / dcnt[i][1]; 88 } 89 90 /* output average in dB */ 91 92 for(int i = 0; i < noutput_items; i++) 93 } 94 Kr[i][0] = (Myu4r[i][0] - 4 * Myu3r[i][0] * Myu1r[i][0] + 6 * Myu2r[i][0] * Myu1r[i][0] * Myu1r[i][0] 95 - 3 * Myu1r[i][0] * Myu1r[i][0] * Myu1r[i][0] * Myu1r[i][0]) / ((Myu2r[i][0] - 96 Myu1r[i][0] * Myu1r[i][0]) * (Myu2r[i][0] - Myu1r[i][0] * Myu1r[i][0])); 97 98 Ki[i][1] = (Myu4i[i][1] - 4 * Myu3i[i][1] * Myu1i[i][1] + 6 * Myu2i[i][1] * Myu1i[i][1] * Myu1i[i][1] 99 - 3 * Myu1i[i][1] * Myu1i[i][1] * Myu1i[i][1] * Myu1i[i][1]) / ((Myu2i[i][1] - 100 Myu1i[i][1] * Myu1i[i][1]) * (Myu2i[i][1] - Myu1i[i][1] * Myu1i[i][1])); 101 } 102 103 // Tell runtime system how many output items we produced. 104 return noutput_items; 105 } 106 107 } /* namespace Kurtosis1 */ 108} /* namespace gr */ 109

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/19 09:09