GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
fastnoise_source.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2013,2018 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 
12 #ifndef FASTNOISE_SOURCE_H
13 #define FASTNOISE_SOURCE_H
14 
15 #include <gnuradio/analog/api.h>
17 #include <gnuradio/sync_block.h>
18 #include <cstdint>
19 #include <vector>
20 
21 namespace gr {
22 namespace analog {
23 
24 /*!
25  * \brief Random number source
26  * \ingroup source_blk
27  *
28  * \details
29  * Generate random values from different distributions.
30  * Currently, only Gaussian and uniform are enabled.
31  */
32 template <class T>
33 class ANALOG_API fastnoise_source : virtual public sync_block
34 {
35 public:
36  // gr::analog::fastnoise_source::sptr
37  typedef std::shared_ptr<fastnoise_source<T>> sptr;
38 
39  /*! \brief Make a fast noise source
40  * \param type the random distribution to use (see
41  * gnuradio/analog/noise_type.h)
42  * \param ampl the standard deviation of a 1-d noise process. If
43  * this is the complex source, this parameter is split
44  * among the real and imaginary parts:
45  * <pre>(ampl/sqrt(2))x + j(ampl/sqrt(2))y</pre>
46  * \param seed seed for random generators. seed = 0 initializes
47  * the random number generator with the system time.
48  * \param samples Number of samples to pre-generate. For performance
49  * reasons, prefer a power of 2.
50  */
51  static sptr
52  make(noise_type_t type, float ampl, uint64_t seed = 0, size_t samples = 1024 * 16);
53  virtual T sample() = 0;
54  virtual T sample_unbiased() = 0;
55  virtual const std::vector<T>& samples() const = 0;
56 
57  /*!
58  * Set the noise type. Nominally from the
59  * gr::analog::noise_type_t selections, but only GR_GAUSSIAN and
60  * GR_UNIFORM are currently available.
61  */
62  virtual void set_type(noise_type_t type) = 0;
63 
64  /*!
65  * Set the standard deviation (amplitude) of the 1-d noise
66  * process.
67  */
68  virtual void set_amplitude(float ampl) = 0;
69 
70  virtual noise_type_t type() const = 0;
71  virtual float amplitude() const = 0;
72 };
73 
78 } /* namespace analog */
79 } /* namespace gr */
80 
81 
82 #endif /* FASTNOISE_SOURCE_H */
Random number source.
Definition: fastnoise_source.h:34
virtual const std::vector< T > & samples() const =0
virtual void set_amplitude(float ampl)=0
static sptr make(noise_type_t type, float ampl, uint64_t seed=0, size_t samples=1024 *16)
Make a fast noise source.
virtual float amplitude() const =0
virtual noise_type_t type() const =0
virtual void set_type(noise_type_t type)=0
std::shared_ptr< fastnoise_source< T > > sptr
Definition: fastnoise_source.h:37
synchronous 1:1 input to output with history
Definition: sync_block.h:26
#define ANALOG_API
Definition: gr-analog/include/gnuradio/analog/api.h:18
fastnoise_source< float > fastnoise_source_f
Definition: fastnoise_source.h:74
noise_type_t
Definition: noise_type.h:17
fastnoise_source< gr_complex > fastnoise_source_c
Definition: fastnoise_source.h:77
fastnoise_source< std::int32_t > fastnoise_source_i
Definition: fastnoise_source.h:75
fastnoise_source< std::int16_t > fastnoise_source_s
Definition: fastnoise_source.h:76
GNU Radio logging wrapper.
Definition: basic_block.h:29