Controlpp
Loading...
Searching...
No Matches
controlpp::TransferFunction< T, NumOrder, DenOrder > Class Template Reference

#include <controlpp/TransferFunction.hpp>

Public Types

using value_type = T
 
using num_type = Polynom< T, NumOrder >
 
using den_type = Polynom< T, DenOrder >
 
using num_vector_type = typename num_type::vector_type
 
using den_vector_type = typename den_type::vector_type
 

Public Member Functions

constexpr TransferFunction ()=default
 
constexpr TransferFunction (const TransferFunction &)=default
 
constexpr TransferFunctionoperator= (const TransferFunction &)=default
 
template<int NumOrder2, int DenOrder2>
requires (((NumOrder2 < NumOrder) || (DenOrder2 < DenOrder)) && (NumOrder2 <= NumOrder) && (DenOrder2 <= DenOrder))
 TransferFunction (const TransferFunction< T, NumOrder2, DenOrder2 > &other)
 
template<int NumOrder2, int DenOrder2>
requires (((NumOrder2 < NumOrder) || (DenOrder2 < DenOrder)) && (NumOrder2 <= NumOrder) && (DenOrder2 <= DenOrder))
TransferFunctionoperator= (const TransferFunction< T, NumOrder2, DenOrder2 > &other)
 
constexpr TransferFunction (const Polynom< T, NumOrder > &num, const Polynom< T, DenOrder > &den)
 
constexpr TransferFunction (const num_vector_type &num, const den_vector_type &den)
 
constexpr TransferFunction (const T(&num)[NumOrder+1], const T(&den)[DenOrder+1])
 
constexpr Polynom< T, NumOrder > & num ()
 returns a reference to the numerator
 
constexpr const Polynom< T, NumOrder > & num () const
 returns a reference to the numerator
 
constexpr T & num (size_t i)
 Returns the parameter of the numerator polynomial at the index/position i.
 
constexpr const T & num (size_t i) const
 Returns the parameter of the numerator polynomial at the index/position i.
 
constexpr Polynom< T, DenOrder > & den ()
 returns a reference to the denominator
 
constexpr const Polynom< T, DenOrder > & den () const
 returns a reference to the denominator
 
constexpr T & den (size_t i)
 Returns the parameter of the denominator polynomial at the index/position i.
 
constexpr const T & den (size_t i) const
 Returns the parameter of the denominator polynomial at the index/position i.
 
constexpr T eval (const T &x) const
 Evaluates the rational polynomial at x
 
template<int M>
constexpr 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.
 
constexpr std::complex< T > eval (const std::complex< T > &x) const
 Evaluates the rational polynomial at a complex x
 
template<int M>
constexpr 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.
 
constexpr std::complex< T > eval_frequency (const T &frequency) const
 Evaluates the transfer function at the given frequency (rad/s)
 
constexpr std::complex< T > eval_frequency_Hz (const T &frequency) const
 Evaluates the transfer function at the given frequency (Hz)
 
template<int M>
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)
 
template<int M>
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)
 
void print (std::ostream &stream, std::string_view var="x") const
 
void print (std::ostream &stream, std::function< std::string(int i)> var) const
 

Friends

std::ostream & operator<< (std::ostream &stream, const TransferFunction &rpoly)
 

Member Typedef Documentation

◆ den_type

template<class T , int NumOrder, int DenOrder>
using controlpp::TransferFunction< T, NumOrder, DenOrder >::den_type = Polynom<T, DenOrder>

◆ den_vector_type

template<class T , int NumOrder, int DenOrder>
using controlpp::TransferFunction< T, NumOrder, DenOrder >::den_vector_type = typename den_type::vector_type

◆ num_type

template<class T , int NumOrder, int DenOrder>
using controlpp::TransferFunction< T, NumOrder, DenOrder >::num_type = Polynom<T, NumOrder>

◆ num_vector_type

template<class T , int NumOrder, int DenOrder>
using controlpp::TransferFunction< T, NumOrder, DenOrder >::num_vector_type = typename num_type::vector_type

◆ value_type

template<class T , int NumOrder, int DenOrder>
using controlpp::TransferFunction< T, NumOrder, DenOrder >::value_type = T

Constructor & Destructor Documentation

◆ TransferFunction() [1/6]

template<class T , int NumOrder, int DenOrder>
constexpr controlpp::TransferFunction< T, NumOrder, DenOrder >::TransferFunction ( )
constexprdefault

◆ TransferFunction() [2/6]

template<class T , int NumOrder, int DenOrder>
constexpr controlpp::TransferFunction< T, NumOrder, DenOrder >::TransferFunction ( const TransferFunction< T, NumOrder, DenOrder > &  )
constexprdefault

◆ TransferFunction() [3/6]

template<class T , int NumOrder, int DenOrder>
template<int NumOrder2, int DenOrder2>
requires (((NumOrder2 < NumOrder) || (DenOrder2 < DenOrder)) && (NumOrder2 <= NumOrder) && (DenOrder2 <= DenOrder))
controlpp::TransferFunction< T, NumOrder, DenOrder >::TransferFunction ( const TransferFunction< T, NumOrder2, DenOrder2 > &  other)
inline

◆ TransferFunction() [4/6]

template<class T , int NumOrder, int DenOrder>
constexpr controlpp::TransferFunction< T, NumOrder, DenOrder >::TransferFunction ( const Polynom< T, NumOrder > &  num,
const Polynom< T, DenOrder > &  den 
)
inlineconstexpr

◆ TransferFunction() [5/6]

template<class T , int NumOrder, int DenOrder>
constexpr controlpp::TransferFunction< T, NumOrder, DenOrder >::TransferFunction ( const num_vector_type num,
const den_vector_type den 
)
inlineconstexpr

◆ TransferFunction() [6/6]

template<class T , int NumOrder, int DenOrder>
constexpr controlpp::TransferFunction< T, NumOrder, DenOrder >::TransferFunction ( const T(&)  num[NumOrder+1],
const T(&)  den[DenOrder+1] 
)
inlineconstexpr

Member Function Documentation

◆ den() [1/4]

template<class T , int NumOrder, int DenOrder>
constexpr Polynom< T, DenOrder > & controlpp::TransferFunction< T, NumOrder, DenOrder >::den ( )
inlineconstexpr

returns a reference to the denominator

Returns
a reference to a polynomial

◆ den() [2/4]

template<class T , int NumOrder, int DenOrder>
constexpr const Polynom< T, DenOrder > & controlpp::TransferFunction< T, NumOrder, DenOrder >::den ( ) const
inlineconstexpr

returns a reference to the denominator

Returns
a reference to a polynomial

◆ den() [3/4]

template<class T , int NumOrder, int DenOrder>
constexpr T & controlpp::TransferFunction< T, NumOrder, DenOrder >::den ( size_t  i)
inlineconstexpr

Returns the parameter of the denominator polynomial at the index/position i.

Parameters
iThe index at which to return the corresponding parameter
Returns
A reference to the returned parameter

◆ den() [4/4]

template<class T , int NumOrder, int DenOrder>
constexpr const T & controlpp::TransferFunction< T, NumOrder, DenOrder >::den ( size_t  i) const
inlineconstexpr

Returns the parameter of the denominator polynomial at the index/position i.

Parameters
iThe index at which to return the corresponding parameter
Returns
A const-reference to the returned parameter

◆ eval() [1/4]

template<class T , int NumOrder, int DenOrder>
template<int M>
constexpr Eigen::Vector< std::complex< T >, M > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval ( const Eigen::Vector< std::complex< T >, M > &  x_vec) const
inlineconstexpr

Evaluates the rational polynomial elementwise at every complex element of the input vector.

Parameters
x_vecThe complex parameter vector at which the rational polynomial is being evaluated at
Returns
An eigen vector with the complex results of the rational polynomial

◆ eval() [2/4]

template<class T , int NumOrder, int DenOrder>
template<int M>
constexpr Eigen::Vector< T, M > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval ( const Eigen::Vector< T, M > &  x_vec) const
inlineconstexpr

Evaluates the rational polynomial elementwise at every element of the input vector.

Parameters
x_vecThe parameter vector at which the rational polynomial is being evaluated at
Returns
An eigen vector with the results of the rational polynomial

◆ eval() [3/4]

template<class T , int NumOrder, int DenOrder>
constexpr std::complex< T > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval ( const std::complex< T > &  x) const
inlineconstexpr

Evaluates the rational polynomial at a complex x

Parameters
xThe complex variable used to evaluate the polynomial
Returns
The result of the polynomial as a complex value

◆ eval() [4/4]

template<class T , int NumOrder, int DenOrder>
constexpr T controlpp::TransferFunction< T, NumOrder, DenOrder >::eval ( const T &  x) const
inlineconstexpr

Evaluates the rational polynomial at x

Parameters
xThe variable used to evaluate the polynomial
Returns
The result of the polynomial

◆ eval_frequencies()

template<class T , int NumOrder, int DenOrder>
template<int M>
constexpr Eigen::Vector< std::complex< T >, M > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval_frequencies ( const Eigen::Vector< T, M > &  frequencies) const
inlineconstexpr

Evaluates the transfer function at the given frequencies (rad/s)

Parameters
frequenciesThe frequencies (rad/s) at which to evaluate the transfer function at
Returns
The complex result of the frequency evaluation/analysis.

◆ eval_frequencies_hz()

template<class T , int NumOrder, int DenOrder>
template<int M>
constexpr Eigen::Vector< std::complex< T >, M > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval_frequencies_hz ( const Eigen::Vector< T, M > &  frequencies) const
inlineconstexpr

Evaluates the transfer function at the given frequencies (Hz)

Parameters
frequenciesThe frequencies (Hz) at which to evaluate the transfer function at
Returns
The complex result of the frequency evaluation/analysis.

◆ eval_frequency()

template<class T , int NumOrder, int DenOrder>
constexpr std::complex< T > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval_frequency ( const T &  frequency) const
inlineconstexpr

Evaluates the transfer function at the given frequency (rad/s)

equivalent to calling .eval(std::complex<T>(0, f)).

Parameters
frequencyThe frequency (in radiants per second) at which to evaluate the transfer function at
Returns
The complex result of the frequency evaluation/analysis.

◆ eval_frequency_Hz()

template<class T , int NumOrder, int DenOrder>
constexpr std::complex< T > controlpp::TransferFunction< T, NumOrder, DenOrder >::eval_frequency_Hz ( const T &  frequency) const
inlineconstexpr

Evaluates the transfer function at the given frequency (Hz)

Parameters
frequencyThe frequency (Hz) at which to evaluate the transfer function at
Returns
The complex result of the frequency evaluation/analysis.

◆ num() [1/4]

template<class T , int NumOrder, int DenOrder>
constexpr Polynom< T, NumOrder > & controlpp::TransferFunction< T, NumOrder, DenOrder >::num ( )
inlineconstexpr

returns a reference to the numerator

Returns
a reference to a polynomial

◆ num() [2/4]

template<class T , int NumOrder, int DenOrder>
constexpr const Polynom< T, NumOrder > & controlpp::TransferFunction< T, NumOrder, DenOrder >::num ( ) const
inlineconstexpr

returns a reference to the numerator

Returns
a const-reference to a polynomial

◆ num() [3/4]

template<class T , int NumOrder, int DenOrder>
constexpr T & controlpp::TransferFunction< T, NumOrder, DenOrder >::num ( size_t  i)
inlineconstexpr

Returns the parameter of the numerator polynomial at the index/position i.

Parameters
iThe index at which to return the corresponding parameter
Returns
A reference to the returned parameter

◆ num() [4/4]

template<class T , int NumOrder, int DenOrder>
constexpr const T & controlpp::TransferFunction< T, NumOrder, DenOrder >::num ( size_t  i) const
inlineconstexpr

Returns the parameter of the numerator polynomial at the index/position i.

Parameters
iThe index at which to return the corresponding parameter
Returns
A const-reference to the returned parameter

◆ operator=() [1/2]

template<class T , int NumOrder, int DenOrder>
constexpr TransferFunction & controlpp::TransferFunction< T, NumOrder, DenOrder >::operator= ( const TransferFunction< T, NumOrder, DenOrder > &  )
constexprdefault

◆ operator=() [2/2]

template<class T , int NumOrder, int DenOrder>
template<int NumOrder2, int DenOrder2>
requires (((NumOrder2 < NumOrder) || (DenOrder2 < DenOrder)) && (NumOrder2 <= NumOrder) && (DenOrder2 <= DenOrder))
TransferFunction & controlpp::TransferFunction< T, NumOrder, DenOrder >::operator= ( const TransferFunction< T, NumOrder2, DenOrder2 > &  other)
inline

◆ print() [1/2]

template<class T , int NumOrder, int DenOrder>
void controlpp::TransferFunction< T, NumOrder, DenOrder >::print ( std::ostream &  stream,
std::function< std::string(int i)>  var 
) const
inline

◆ print() [2/2]

template<class T , int NumOrder, int DenOrder>
void controlpp::TransferFunction< T, NumOrder, DenOrder >::print ( std::ostream &  stream,
std::string_view  var = "x" 
) const
inline

Friends And Related Symbol Documentation

◆ operator<<

template<class T , int NumOrder, int DenOrder>
std::ostream & operator<< ( std::ostream &  stream,
const TransferFunction< T, NumOrder, DenOrder > &  rpoly 
)
friend

The documentation for this class was generated from the following file: