nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
filter_design.hpp
Go to the documentation of this file.
1
3// toolboxes/signal/include/nk/signal/filter_design/filter_design.hpp
4#pragma once
5
6#include <memory_resource>
7#include <nk/value/value.hpp>
8
9#include <string>
10#include <tuple>
11
12namespace nk::signal {
13
16
17
28std::tuple<Value, Value>
29butter(int N,
30 double Wn,
31 const std::string & type = "low",
32 std::pmr::memory_resource * mr = nullptr);
33
41Value fir1(int N,
42 double Wn,
43 const std::string & type = "low",
44 std::pmr::memory_resource * mr = nullptr);
45
63 const Value & F,
64 const Value & A,
65 std::pmr::memory_resource * mr = nullptr);
66
71std::tuple<Value, Value>
72cell2sos(const Value & C,
73 std::pmr::memory_resource * mr = nullptr);
74
80 int npt = 0;
81
85 int lap = 0;
86
90};
91
112 const Value & f,
113 const Value & m,
114 const Fir2Options & opts = {},
115 std::pmr::memory_resource * mr = nullptr);
116
147std::tuple<Value, double>
148firpm(int N,
149 const Value & F,
150 const Value & A,
151 const Value & W = Value::Empty,
152 const std::string & ftype = "",
153 std::pmr::memory_resource * mr = nullptr);
154
155
157} // 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 fir1(int N, double Wn, const std::string &type="low", std::pmr::memory_resource *mr=nullptr)
FIR filter design via windowed-sinc (Hamming window).
std::tuple< Value, Value > cell2sos(const Value &C, std::pmr::memory_resource *mr=nullptr)
cell2sos(C) — convert cell array of {Bi, Ai} pairs to L×6 SOS matrix.
Value fir2(int n, const Value &f, const Value &m, const Fir2Options &opts={}, std::pmr::memory_resource *mr=nullptr)
Frequency-sampling FIR filter design (b = fir2(n, f, m [, npt] [, lap] [, window])).
std::tuple< Value, double > firpm(int N, const Value &F, const Value &A, const Value &W=Value::Empty, const std::string &ftype="", std::pmr::memory_resource *mr=nullptr)
firpm(N, F, A [, W] [, ftype]) — Parks-McClellan optimal equiripple FIR (Remez exchange).
Value firls(int N, const Value &F, const Value &A, std::pmr::memory_resource *mr=nullptr)
Least-squares FIR filter design (Type-I linear-phase only).
std::tuple< Value, Value > butter(int N, double Wn, const std::string &type="low", std::pmr::memory_resource *mr=nullptr)
Butterworth IIR lowpass / highpass filter design.
Optional arguments for fir2.
int lap
Width, in grid points, of the smoothing region applied at a duplicated break frequency (lap).
Value window
Output window, a length-(N+1) vector.
int npt
Number of frequency-grid points (npt).