Hello,
I am using GNU Radio version 3.6.5 and trying to write a block to calculate average of 5 samples. I want to produce one average output corresponding to 5 input samples. I am using set_history(5) to remember previous data. I used gr_modtool script of type decimator to create file. eg. for Vector source {1,2,3,4,5,6,7,8,9,10}, it should generate average {3,8}. Instead I am getting {.2, .6}. My requirement is to produce output, it should take 5 inputs. Please suggest me where I need to do modification. In function gr_sync_decimator("average", gr_make_io_signature(1, 1, sizeof(float)), gr_make_io_signature(1, 1, sizeof(float)), 5) what role value 5 will play? Below is code snapshot. #ifdef HAVE_CONFIG_H #include "config.h" #endif #include <gr_io_signature.h> #include "average_impl.h" namespace gr { namespace howto { average::sptr average::make() { return gnuradio::get_initial_sptr (new average_impl()); } /* * The private constructor */ average_impl::average_impl() : gr_sync_decimator("average", gr_make_io_signature(1, 1, sizeof(float)), gr_make_io_signature(1, 1, sizeof(float)), 5) { set_history(5); } /* * Our virtual destructor. */ average_impl::~average_impl() { } int average_impl::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { const float *in = (const float *) input_items[0]; float *out = (float *) output_items[0]; in +=4; for(int i=0; i<noutput_items; i++){ out[i]=(in[i]+in[i-1]+in[i-2]+in[i-3]+in[i-4])/5; } return noutput_items; } } /* namespace howto */ } /* namespace gr */ Thanks and regards, Kunal Sankhe
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio