nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
lti.hpp
Go to the documentation of this file.
1
3// toolboxes/control/include/nk/control/lti/lti.hpp
4//
5// LTI (Linear Time-Invariant) system constructors. Each returns a
6// nk struct value with a `kind` field tag ('tf', 'zpk', or 'ss')
7// plus the canonical fields. Optional `Ts` field for discrete systems
8// (>0); 0 means continuous-time.
9
10#pragma once
11
12#include <memory_resource>
13#include <nk/value/value.hpp>
14#include <tuple>
15
16namespace nk::control {
17
20
21
43Value tf(const Value &num, const Value &den, double Ts,
44 std::pmr::memory_resource *mr = nullptr);
45
60Value zpk(const Value &z, const Value &p, double k, double Ts,
61 std::pmr::memory_resource *mr = nullptr);
62
81Value ss(const Value &A, const Value &B, const Value &C, const Value &D,
82 double Ts, std::pmr::memory_resource *mr = nullptr);
83
99Value filt(const Value &num, const Value &den, double Ts,
100 std::pmr::memory_resource *mr = nullptr);
101
115Value frd(const Value &response, const Value &frequency, double Ts,
116 std::pmr::memory_resource *mr = nullptr);
117
126std::tuple<Value, Value>
127frdata(const Value &sys, std::pmr::memory_resource *mr = nullptr);
128
146std::tuple<Value, Value>
147tfdata(const Value &sys, bool asVector, std::pmr::memory_resource *mr = nullptr);
148
160std::tuple<Value, Value, Value>
161zpkdata(const Value &sys, bool asVector, std::pmr::memory_resource *mr = nullptr);
162
172std::tuple<Value, Value, Value, Value>
173ssdata(const Value &sys, std::pmr::memory_resource *mr = nullptr);
174
186Value ss2ss(const Value &sys, const Value &T,
187 std::pmr::memory_resource *mr = nullptr);
188
189
191} // namespace nk::control
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value tf(const Value &num, const Value &den, double Ts, std::pmr::memory_resource *mr=nullptr)
Transfer-function LTI constructor (tf(num, den, Ts)).
std::tuple< Value, Value > tfdata(const Value &sys, bool asVector, std::pmr::memory_resource *mr=nullptr)
Extract numerator / denominator from any LTI form (tfdata).
std::tuple< Value, Value, Value, Value > ssdata(const Value &sys, std::pmr::memory_resource *mr=nullptr)
Extract A, B, C, D from any LTI form (ssdata).
std::tuple< Value, Value > frdata(const Value &sys, std::pmr::memory_resource *mr=nullptr)
Extract (resp, freq) from an frd model.
Value ss(const Value &A, const Value &B, const Value &C, const Value &D, double Ts, std::pmr::memory_resource *mr=nullptr)
State-space LTI constructor (ss(A, B, C, D, Ts)).
Value ss2ss(const Value &sys, const Value &T, std::pmr::memory_resource *mr=nullptr)
Similarity transform of a state-space model (ss2ss(sys, T)).
Value filt(const Value &num, const Value &den, double Ts, std::pmr::memory_resource *mr=nullptr)
Discrete tf with z^-1 variable convention (filt(num, den, Ts)).
Value zpk(const Value &z, const Value &p, double k, double Ts, std::pmr::memory_resource *mr=nullptr)
Zero-pole-gain LTI constructor (zpk(z, p, k, Ts)).
std::tuple< Value, Value, Value > zpkdata(const Value &sys, bool asVector, std::pmr::memory_resource *mr=nullptr)
Extract zeros, poles, and gain (zpkdata).
Value frd(const Value &response, const Value &frequency, double Ts, std::pmr::memory_resource *mr=nullptr)
Frequency-response data model (frd(response, frequency, Ts)).