nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
waveform_generation.hpp
Go to the documentation of this file.
1
3// toolboxes/signal/include/nk/signal/waveform_generation/waveform_generation.hpp
4//
5// Pulse and chirp waveforms.
6
7#pragma once
8
9#include <memory_resource>
10#include <nk/value/fn_handle.hpp>
11#include <nk/value/span.hpp>
12#include <nk/value/value.hpp>
13
14#include <string>
15
16namespace nk::signal {
17
20
21
32 double w = 1.0,
33 std::pmr::memory_resource * mr = nullptr);
34
44 double w = 1.0,
45 std::pmr::memory_resource * mr = nullptr);
46
59 double fc,
60 double bw = 0.5,
61 std::pmr::memory_resource * mr = nullptr);
62
77 const Value & d,
78 const std::string & fnName,
79 double fcOrW = 1.0,
80 double bw = 0.5,
81 std::pmr::memory_resource * mr = nullptr);
82
99 FnHandle fn,
100 std::pmr::memory_resource * mr = nullptr);
101
118Value chirp(const Value & t,
119 double f0,
120 double t1,
121 double f1,
122 const std::string & method = "linear",
123 std::pmr::memory_resource * mr = nullptr);
124
135 double duty = 50.0,
136 std::pmr::memory_resource * mr = nullptr);
137
150 double width = 1.0,
151 std::pmr::memory_resource * mr = nullptr);
152
158Value sinc(const Value & t,
159 std::pmr::memory_resource * mr = nullptr);
160
171 double fc,
172 std::pmr::memory_resource * mr = nullptr);
173
183Value diric(const Value & x,
184 int n,
185 std::pmr::memory_resource * mr = nullptr);
186
211 double Fc,
212 double Fs,
213 const std::string & method,
214 const Value & opt = Value::Empty,
215 std::pmr::memory_resource * mr = nullptr);
216
238Value demod(const Value & y,
239 double Fc,
240 double Fs,
241 const std::string & method,
242 const Value & opt = Value::Empty,
243 std::pmr::memory_resource * mr = nullptr);
244
257Value vco(const Value &x, double fc, double fs,
258 std::pmr::memory_resource *mr = nullptr);
259
272Value vco(const Value &x, double fmin, double fmax, double fs,
273 std::pmr::memory_resource *mr = nullptr);
274
275
277} // namespace nk::signal
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
static const Value Empty
MATLAB-style empty matrix sentinel — a 0×0 DOUBLE value.
Definition value.hpp:136
Value diric(const Value &x, int n, std::pmr::memory_resource *mr=nullptr)
Dirichlet (periodic-sinc) function of order n.
Value demod(const Value &y, double Fc, double Fs, const std::string &method, const Value &opt=Value::Empty, std::pmr::memory_resource *mr=nullptr)
Analog demodulation (AM family).
Value vco(const Value &x, double fc, double fs, std::pmr::memory_resource *mr=nullptr)
Voltage-controlled (frequency-modulated) oscillator.
Value square(const Value &t, double duty=50.0, std::pmr::memory_resource *mr=nullptr)
Square wave with period 2π.
Value gmonopuls(const Value &t, double fc, std::pmr::memory_resource *mr=nullptr)
Gaussian monopulse at centre frequency fc.
Value chirp(const Value &t, double f0, double t1, double f1, const std::string &method="linear", std::pmr::memory_resource *mr=nullptr)
Frequency-modulated cosine (chirp).
Value gauspuls(const Value &t, double fc, double bw=0.5, std::pmr::memory_resource *mr=nullptr)
Gaussian-modulated sinusoid.
Value pulstranHandle(Span< const double > t, Span< const double > d, FnHandle fn, std::pmr::memory_resource *mr=nullptr)
Pulse train with a callback-based pulse generator.
Value pulstran(const Value &t, const Value &d, const std::string &fnName, double fcOrW=1.0, double bw=0.5, std::pmr::memory_resource *mr=nullptr)
Pulse train: Σ_i fn(t - d_i) for a named pulse type.
Value tripuls(const Value &t, double w=1.0, std::pmr::memory_resource *mr=nullptr)
Triangular pulse of unit amplitude on |t| ≤ w/2.
Value sinc(const Value &t, std::pmr::memory_resource *mr=nullptr)
Normalised cardinal sine: sinc(0) = 1, otherwise sin(πt)/(πt).
Value sawtooth(const Value &t, double width=1.0, std::pmr::memory_resource *mr=nullptr)
Sawtooth wave on period 2π.
Value modulate(const Value &x, double Fc, double Fs, const std::string &method, const Value &opt=Value::Empty, std::pmr::memory_resource *mr=nullptr)
Analog modulation: AM / FM / PM family.
Value rectpuls(const Value &t, double w=1.0, std::pmr::memory_resource *mr=nullptr)
Rectangular pulse of unit amplitude on the open interval (-w/2, w/2).