2007/5/3, konvak <[EMAIL PROTECTED]>:
hi all,
I would be interested in getting and displaying some
statistical information (mean, variance...) about received signal (let's
say for educational purposes to try to determine what kind of modulation
I am receiving). Is there any way to get let's say the mean value of the
signal without writing a new block. The only thing I came across is
gr.probe_signal_f() to get the value of the signal. Is it possible to
get _every_ sample with this, somehow I don't think it would work. So do
I really need a new block?
thanks for any suggestions and help,
tomas
I have attached a patch that adds a gr_mean_XX block to gnuradio-core.
The block calculates the arithmetic mean of a single vector. The
variance block should be quite easy to create using this one as a
template. I have not added the various bits and pieces to Makefile.am
etc, but that should (in theory... :) ) not be too hard.
Cheers,
--
Trond Danielsen
Index: gr_mean_XX.cc.t
===================================================================
--- gr_mean_XX.cc.t (revisjon 0)
+++ gr_mean_XX.cc.t (revisjon 0)
@@ -0,0 +1,64 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+// @WARNING@
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <@[EMAIL PROTECTED]>
+#include <gr_io_signature.h>
+
[EMAIL PROTECTED]@
[EMAIL PROTECTED]@ ( size_t vlen )
+{
+ return @SPTR_NAME@ ( new @NAME@(vlen));
+}
+
[EMAIL PROTECTED]@::@NAME@( size_t vlen)
+ : gr_sync_block ( "@BASE_NAME@",
+ gr_make_io_signature (1, 1, vlen*sizeof (@I_TYPE@)),
+ gr_make_io_signature (1, 1, sizeof (@O_TYPE@))),
+ d_vlen(vlen)
+{
+}
+
+int
[EMAIL PROTECTED]@::work( int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+{
+ const @I_TYPE@ *in;
+ @O_TYPE@ *optr = (@O_TYPE@ *) output_items[0];
+
+ for (int i=0; i<noutput_items; i++) {
+
+ @O_TYPE@ acc = 0;
+ for (int j=0; j<d_vlen; j++ )
+ acc += in[i*d_vlen + j]
+
+ optr[i] = acc/d_vlen;
+ }
+ return noutput_items;
+}
+
Index: gr_mean_XX.h.t
===================================================================
--- gr_mean_XX.h.t (revisjon 0)
+++ gr_mean_XX.h.t (revisjon 0)
@@ -0,0 +1,51 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+// @WARNING@
+
+#ifndef @GUARD_NAME@
+#define @GUARD_NAME@
+
+#include <gr_sync_block.h>
+
+class @NAME@;
+typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
+
[EMAIL PROTECTED]@ [EMAIL PROTECTED]@ (size_t vlen);
+
+
+class @NAME@ : public gr_sync_block
+{
+ friend @SPTR_NAME@ [EMAIL PROTECTED]@ (size_t vlen);
+
+ @NAME@ (size_t vlen);
+ size_t d_vlen;
+
+ public:
+
+ int work (int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+};
+
+
+#endif
Index: gr_mean_XX.i.t
===================================================================
--- gr_mean_XX.i.t (revisjon 0)
+++ gr_mean_XX.i.t (revisjon 0)
@@ -0,0 +1,34 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+// @WARNING@
+
+GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@)
+
[EMAIL PROTECTED]@ [EMAIL PROTECTED]@ (size_t vlen);
+
+class @NAME@ : public gr_sync_block
+{
+ private:
+ @NAME@ (size_t vlen);
+ size_t d_vlen;
+};
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio