27 template<
class T,
int NumOrder,
int DenOrder>
60 T&
num(
size_t i) {
return this->tf_.
num(i);}
61 const T&
num(
size_t i)
const {
return this->tf_.
num(i);}
66 T&
den(
size_t i) {
return this->tf_.
den(i);}
67 const T&
den(
size_t i)
const {
return this->tf_.
den(i);}
78 return this->tf_.
eval(x);
87 Eigen::Vector<T, M>
eval(
const Eigen::Vector<T, M>& x_vec)
const {
88 return this->tf_.
eval(x_vec);
96 std::complex<T>
eval(
const std::complex<T>& x)
const {
97 return this->tf_.
eval(x);
106 Eigen::Vector<std::complex<T>, M>
eval(
const Eigen::Vector<std::complex<T>, M>& x_vec)
const {
107 return this->tf_.
eval(x_vec);
155 template<
class T,
int NumOrder1,
int DenOrder1,
int NumOrder2,
int DenOrder2>
160 template<
class Tpoly,
class Tscalar,
int NumOrder,
int DenOrder>
165 template<
class Tpoly,
class Tscalar,
int NumOrder,
int DenOrder>
173 template<
class T,
int NumOrder,
int DenOrder>
178 template<
class T,
int NumOrder1,
int DenOrder1,
int NumOrder2,
int DenOrder2>
183 template<
class T,
class Tscalar,
int NumOrder,
int DenOrder>
188 template<
class T,
class Tscalar,
int NumOrder,
int DenOrder>
196 template<
class T,
int NumOrder1,
int DenOrder1,
int NumOrder2,
int DenOrder2>
201 template<
class T,
class Tscalar,
int NumOrder,
int DenOrder>
206 template<
class T,
class Tscalar,
int NumOrder,
int DenOrder>
214 template<
class T,
int NumOrder1,
int DenOrder1,
int NumOrder2,
int DenOrder2>
219 template<
class T,
class Tscalar,
int NumOrder,
int DenOrder>
224 template<
class T,
class Tscalar,
int NumOrder,
int DenOrder>
231 template<
class T=
double>
237 template<
class T,
int NumOrder,
int DenOrder>
239 const Eigen::Vector<std::complex<T>, NumOrder> result =
zeros(tf.
num());
243 template<
class T,
int NumOrder,
int DenOrder>
245 const Eigen::Vector<std::complex<T>, DenOrder> result =
zeros(tf.
den());
Continuous transfer functions in the s lapace plain.
Definition ContinuousTransferFunction.hpp:28
ContinuousTransferFunction(const Eigen::Vector< T, NumOrder+1 > &num, const Eigen::Vector< T, DenOrder+1 > &den)
Definition ContinuousTransferFunction.hpp:51
num_type & num()
Definition ContinuousTransferFunction.hpp:57
ContinuousTransferFunction(const TransferFunction< T, NumOrder, DenOrder > &transfer_function)
Definition ContinuousTransferFunction.hpp:48
T value_type
Definition ContinuousTransferFunction.hpp:30
const num_type & num() const
Definition ContinuousTransferFunction.hpp:58
std::complex< T > eval_frequency_Hz(const T &frequency) const
Definition ContinuousTransferFunction.hpp:122
T & num(size_t i)
Definition ContinuousTransferFunction.hpp:60
Eigen::Vector< std::complex< T >, M > eval(const Eigen::Vector< std::complex< T >, M > &x_vec) const
Evaluates the rational polynomial elementwise at every complex element of the input vector.
Definition ContinuousTransferFunction.hpp:106
typename transfer_function_type::den_vector_type den_vector_type
Definition ContinuousTransferFunction.hpp:35
std::complex< T > eval(const std::complex< T > &x) const
Evaluates the rational polynomial at a complex x
Definition ContinuousTransferFunction.hpp:96
ContinuousTransferFunction & operator=(const ContinuousTransferFunction &)=default
std::complex< T > eval_frequency(const T &frequency) const
Evaluates the transfer function at the given frequency.
Definition ContinuousTransferFunction.hpp:118
transfer_function_type & transfer_function()
Definition ContinuousTransferFunction.hpp:69
Eigen::Vector< std::complex< T >, M > eval_frequencies_hz(const Eigen::Vector< T, M > &frequencies) const
Evaluates the transfer function (Hz) at the given frequencies.
Definition ContinuousTransferFunction.hpp:142
Eigen::Vector< std::complex< T >, M > eval_frequencies(const Eigen::Vector< T, M > &frequencies) const
Evaluates the transfer function (rad/s) at the given frequencies.
Definition ContinuousTransferFunction.hpp:132
Eigen::Vector< T, M > eval(const Eigen::Vector< T, M > &x_vec) const
Evaluates the rational polynomial elementwise at every element of the input vector.
Definition ContinuousTransferFunction.hpp:87
const T & num(size_t i) const
Definition ContinuousTransferFunction.hpp:61
const den_type & den() const
Definition ContinuousTransferFunction.hpp:64
typename transfer_function_type::num_vector_type num_vector_type
Definition ContinuousTransferFunction.hpp:34
ContinuousTransferFunction(const ContinuousTransferFunction &)=default
const transfer_function_type & transfer_function() const
Definition ContinuousTransferFunction.hpp:70
typename transfer_function_type::den_type den_type
Definition ContinuousTransferFunction.hpp:33
const T & den(size_t i) const
Definition ContinuousTransferFunction.hpp:67
ContinuousTransferFunction(const Polynom< T, NumOrder > &num, const Polynom< T, DenOrder > &den)
Definition ContinuousTransferFunction.hpp:45
typename transfer_function_type::num_type num_type
Definition ContinuousTransferFunction.hpp:32
ContinuousTransferFunction(const T(&num)[NumOrder+1], const T(&den)[DenOrder+1])
Definition ContinuousTransferFunction.hpp:54
den_type & den()
Definition ContinuousTransferFunction.hpp:63
T eval(const T &x) const
Evaluates the rational polynomial at x
Definition ContinuousTransferFunction.hpp:77
friend std::ostream & operator<<(std::ostream &stream, const ContinuousTransferFunction &ctf)
Definition ContinuousTransferFunction.hpp:146
ContinuousTransferFunction()=default
T & den(size_t i)
Definition ContinuousTransferFunction.hpp:66
Describes a mathematical polynomial.
Definition Polynom.hpp:39
Definition TransferFunction.hpp:11
Polynom< T, NumOrder > num_type
Definition TransferFunction.hpp:14
constexpr T eval(const T &x) const
Evaluates the rational polynomial at x
Definition TransferFunction.hpp:110
typename num_type::vector_type num_vector_type
Definition TransferFunction.hpp:16
typename den_type::vector_type den_vector_type
Definition TransferFunction.hpp:17
constexpr Eigen::Vector< std::complex< T >, M > eval_frequencies(const Eigen::Vector< T, M > &frequencies) const
Evaluates the transfer function at the given frequencies (rad/s)
Definition TransferFunction.hpp:184
constexpr Eigen::Vector< std::complex< T >, M > eval_frequencies_hz(const Eigen::Vector< T, M > &frequencies) const
Evaluates the transfer function at the given frequencies (Hz)
Definition TransferFunction.hpp:197
constexpr Polynom< T, DenOrder > & den()
returns a reference to the denominator
Definition TransferFunction.hpp:83
constexpr std::complex< T > eval_frequency(const T &frequency) const
Evaluates the transfer function at the given frequency (rad/s)
Definition TransferFunction.hpp:163
void print(std::ostream &stream, std::string_view var="x") const
Definition TransferFunction.hpp:204
Polynom< T, DenOrder > den_type
Definition TransferFunction.hpp:15
constexpr Polynom< T, NumOrder > & num()
returns a reference to the numerator
Definition TransferFunction.hpp:57
constexpr std::complex< T > eval_frequency_Hz(const T &frequency) const
Evaluates the transfer function at the given frequency (Hz)
Definition TransferFunction.hpp:174
const Eigen::Vector< T, Eigen::Dynamic > & frequencies(const Bode< T > &bode)
Converts and returns the frequency vector in rad.
Definition Bode.hpp:461
Bode< T > operator+(const Bode< T > &l, const Bode< T > &r)
Adds two bode plots together.
Definition Bode.hpp:846
The main namespace for the Control++ library.
Definition Bode.cpp:3
Eigen::Vector< std::complex< T >, DenOrder > poles(const ContinuousTransferFunction< T, NumOrder, DenOrder > &tf)
Definition ContinuousTransferFunction.hpp:244
Bode< T > operator-(const Bode< T > &l, const Bode< T > &r)
Definition Bode.hpp:936
Bode< T > operator*(const Bode< T > &l, const Bode< T > &r)
Definition Bode.hpp:979
Eigen::Vector< std::complex< T >, NumOrder > zeros(const ContinuousTransferFunction< T, NumOrder, DenOrder > &tf)
Definition ContinuousTransferFunction.hpp:238
Bode< T > operator/(const Bode< T > &l, const Bode< T > &r)
TODO: make it also work for bode that have different frequency vectors.
Definition Bode.hpp:1026