Loading...
Searching...
No Matches
moving_average.h
Go to the documentation of this file.
/* -*- c++ -*- */
/*
* Copyright 2008,2013,2017,2018 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
#ifndef MOVING_AVERAGE_H
#define MOVING_AVERAGE_H
#include <gnuradio/blocks/api.h>
#include <gnuradio/sync_block.h>
#include <cstdint>
namespace gr {
namespace blocks {
/*!
* \brief output is the moving sum of the last N samples, scaled by the scale factor
* \ingroup level_controllers_blk
*/
template <class T>
class BLOCKS_API moving_average : virtual public sync_block
{
public:
// gr::blocks::moving_average::sptr
typedef std::shared_ptr<moving_average<T>> sptr;
/*!
* Create a moving average block.
*
* \param length Number of samples to use in the average.
* \param scale scale factor for the result.
* \param max_iter limits how long we go without flushing the accumulator
* This is necessary to avoid numerical instability for float and complex.
* \param vlen When > 1, do a per-vector-element moving average
*/
static sptr make(int length, T scale, int max_iter = 4096, unsigned int vlen = 1);
/*!
* Get the length used in the avaraging calculation.
*/
virtual int length() const = 0;
/*!
* Get the scale factor being used.
*/
virtual T scale() const = 0;
/*!
* Set both the length and the scale factor together.
*/
virtual void set_length_and_scale(int length, T scale) = 0;
/*!
* Set the length.
*/
virtual void set_length(int length) = 0;
/*!
* Set the scale factor.
*/
virtual void set_scale(T scale) = 0;
};
typedef moving_average<std::int16_t> moving_average_ss;
typedef moving_average<std::int32_t> moving_average_ii;
typedef moving_average<float> moving_average_ff;
typedef moving_average<gr_complex> moving_average_cc;
} /* namespace blocks */
} /* namespace gr */
#endif /* MOVING_AVERAGE_H */
gr::blocks::moving_average
output is the moving sum of the last N samples, scaled by the scale factor
Definition moving_average.h:28
gr::blocks::moving_average::set_length_and_scale
virtual void set_length_and_scale(int length, T scale)=0
gr::blocks::moving_average::length
virtual int length() const =0
gr::blocks::moving_average::set_length
virtual void set_length(int length)=0
gr::blocks::moving_average::make
static sptr make(int length, T scale, int max_iter=4096, unsigned int vlen=1)
gr::blocks::moving_average::sptr
std::shared_ptr< moving_average< T > > sptr
Definition moving_average.h:31
gr::blocks::moving_average::set_scale
virtual void set_scale(T scale)=0
gr::blocks::moving_average::scale
virtual T scale() const =0
gr::sync_block
synchronous 1:1 input to output with history
Definition sync_block.h:26
api.h
BLOCKS_API
#define BLOCKS_API
Definition gr-blocks/include/gnuradio/blocks/api.h:18
gr::blocks::moving_average_ii
moving_average< std::int32_t > moving_average_ii
Definition moving_average.h:71
gr::blocks::moving_average_cc
moving_average< gr_complex > moving_average_cc
Definition moving_average.h:73
gr::blocks::moving_average_ff
moving_average< float > moving_average_ff
Definition moving_average.h:72
gr::blocks::moving_average_ss
moving_average< std::int16_t > moving_average_ss
Definition moving_average.h:70
gr
GNU Radio logging wrapper.
Definition basic_block.h:29
sync_block.h