|
From: | Karthik |
Subject: | Re: [Discuss-gnuradio] Please help building a signal processing block. |
Date: | Sat, 28 Mar 2009 09:27:40 -0700 |
Hello,
I'm trying to build several signal processing blocks for a project that I'm doing using USRP2. I was going through the examples and sample code along with browsing the source code and I can't seem to find exactly what I need. I'm trying to do an average of a vector of length N:
Input vector size N
Output vector size 1
I'm doing it for floats.
------------------------------
#ifndef INCLUDED_CORES_WEIGHTED_AVG_FF_H
#define INCLUDED_CORES_WEIGHTED_AVG_FF_H
#include <gr_sync_block.h>
class cores_weighted_avg_ff;
typedef boost::shared_ptr<cores_weighted_avg_ff> cores_weighted_avg_ff_sptr;
cores_weighted_avg_ff_sptr cores_make_weighted_avg_ff (unsigned int vlen);
class cores_weighted_avg_ff : public gr_sync_block
{
private:
friend cores_weighted_avg_ff_sptr cores_make_weighted_avg_ff (unsigned int vlen);
cores_weighted_avg_ff (unsigned int vlen); // private constructor
unsigned int d_vlen;
public:
int general_work (int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
};
#endif
----------------------------------------------------------------------------------------------------------
and source
-------------------------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <cores_weighted_avg_ff.h>
#include <gr_io_signature.h>
cores_weighted_avg_ff_sptr
cores_make_weighted_avg_ff (unsigned int vlen)
{ return cores_weighted_avg_ff_sptr (new cores_weighted_avg_ff (vlen));}
cores_weighted_avg_ff::cores_weighted_avg_ff (unsigned int vlen)
: gr_decimator_block ("weighed_avg_ff",
gr_make_io_signature (1, 1, sizeof (float) * vlen),
gr_make_io_signature (1, 1, sizeof (float))),
d_vlen(vlen)
{
}
int
cores_weighted_avg_ff::int general_work (int noutput_items,
gr_vector_int &ninput_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];
int noi = noutput_items * d_vlen;
for (int i = 0; i < noi; i++){
out += in[i]*i;
}
out /= d_vlen;
consume(noutput_items,d_vlen)
return noutput_items;
}
------------------------------------------------------------------------------------------------
I'm not sure if the code is correct what I want to do (input is more than welcome), when I compile this code I get a weird error:
cores_weighted_avg_ff.h: In function ‘PyObject* _wrap_weighted_avg_ff(PyObject*, PyObject*)’:
cores_weighted_avg_ff.h:63: error: too few arguments to function ‘cores_weighted_avg_ff_sptr cores_make_weighted_avg_ff(unsigned int)’
cores.cc:4326: error: at this point in file
make[4]: *** [cores.lo] Error 1
Any help would be greatly appreciated.
[Prev in Thread] | Current Thread | [Next in Thread] |