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

Continuous transfer functions in the s lapace plain. More...

#include <controlpp/DiscreteTransferFunction.hpp>

Public Types

using value_type = T
 
using transfer_function_type = TransferFunction< T, NumOrder, DenOrder >
 
using num_type = typename transfer_function_type::num_type
 
using den_type = typename transfer_function_type::den_type
 
using num_vector_type = typename transfer_function_type::num_vector_type
 
using den_vector_type = typename transfer_function_type::den_vector_type
 

Public Member Functions

constexpr DiscreteTransferFunction ()=default
 
constexpr DiscreteTransferFunction (const DiscreteTransferFunction &)=default
 
constexpr DiscreteTransferFunctionoperator= (const DiscreteTransferFunction &)=default
 
template<int NumOrder2, int DenOrder2>
requires (((NumOrder2 < NumOrder) || (DenOrder2 < DenOrder)) && (NumOrder2 <= NumOrder) && (DenOrder2 <= DenOrder))
 DiscreteTransferFunction (const DiscreteTransferFunction< T, NumOrder2, DenOrder2 > &other)
 
template<int NumOrder2, int DenOrder2>
requires (((NumOrder2 < NumOrder) || (DenOrder2 < DenOrder)) && (NumOrder2 <= NumOrder) && (DenOrder2 <= DenOrder))
DiscreteTransferFunctionoperator= (const DiscreteTransferFunction< T, NumOrder2, DenOrder2 > &other)
 
constexpr DiscreteTransferFunction (const Polynom< T, NumOrder > &num, const Polynom< T, DenOrder > &den)
 
constexpr DiscreteTransferFunction (const TransferFunction< T, NumOrder, DenOrder > &transfer_function)
 
constexpr DiscreteTransferFunction (const num_vector_type &num, const den_vector_type &den)
 
constexpr DiscreteTransferFunction (const value_type(&num)[NumOrder+1], const value_type(&den)[DenOrder+1])
 
constexpr T eval (const Eigen::Vector< T, NumOrder+1 > &input_series, const Eigen::Vector< T, DenOrder > &output_series)
 
template<int N>
constexpr Eigen::Vector< T, N > eval (const Eigen::Vector< T, N > input_series) const
 Evaluates the transfer function for a given input series.
 
constexpr transfer_function_typetransfer_function ()
 
constexpr const transfer_function_typetransfer_function () const
 
constexpr num_typenum ()
 
constexpr const num_typenum () const
 
constexpr T & num (int i)
 
constexpr const T & num (int i) const
 
constexpr den_typeden ()
 
constexpr const den_typeden () const
 
constexpr T & den (int i)
 
constexpr const T & den (int i) const
 

Friends

std::ostream & operator<< (std::ostream &stream, const DiscreteTransferFunction &dtf)
 

Detailed Description

template<class T, int NumOrder, int DenOrder>
class controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >

Continuous transfer functions in the s lapace plain.

Transfer functions of the shape:

\[ G_z(s) = \frac{b_0 + b_1 d \cdots b_m d^m}{a_0 + a_1 d \cdots a_n d^n} \]

Note that the transfer function uses the delay operator: \(d = z^{-1}\).

Template Parameters
TThe value type that the transfer function should use. Like double or float.
NumberOrderThe order of the numerator. m in the equation.
DenOrderThe order of the denominator. n in the equation.

Member Typedef Documentation

◆ den_type

template<class T , int NumOrder, int DenOrder>
using controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::den_type = typename transfer_function_type::den_type

◆ den_vector_type

template<class T , int NumOrder, int DenOrder>
using controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::den_vector_type = typename transfer_function_type::den_vector_type

◆ num_type

template<class T , int NumOrder, int DenOrder>
using controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::num_type = typename transfer_function_type::num_type

◆ num_vector_type

template<class T , int NumOrder, int DenOrder>
using controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::num_vector_type = typename transfer_function_type::num_vector_type

◆ transfer_function_type

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

◆ value_type

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

Constructor & Destructor Documentation

◆ DiscreteTransferFunction() [1/7]

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

◆ DiscreteTransferFunction() [2/7]

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

◆ DiscreteTransferFunction() [3/7]

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

◆ DiscreteTransferFunction() [4/7]

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

◆ DiscreteTransferFunction() [5/7]

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

◆ DiscreteTransferFunction() [6/7]

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

◆ DiscreteTransferFunction() [7/7]

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

Member Function Documentation

◆ den() [1/4]

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

◆ den() [2/4]

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

◆ den() [3/4]

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

◆ den() [4/4]

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

◆ eval() [1/2]

template<class T , int NumOrder, int DenOrder>
template<int N>
constexpr Eigen::Vector< T, N > controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::eval ( const Eigen::Vector< T, N >  input_series) const
inlineconstexpr

Evaluates the transfer function for a given input series.

Starts with zero initial conditions.

Template Parameters
NThe size of the input and output series. Needs to be at least max(NumOrder+1, DenOrder)
Parameters
input_seriesThe input series to evaluate the transfer function for. Needs to be ordered from oldest to newest value. The size needs to be at least max(NumOrder+1, DenOrder)
Returns
The output series that results from evaluating the transfer function for the given input series. The size is the same as the input series.

◆ eval() [2/2]

template<class T , int NumOrder, int DenOrder>
constexpr T controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::eval ( const Eigen::Vector< T, NumOrder+1 > &  input_series,
const Eigen::Vector< T, DenOrder > &  output_series 
)
inlineconstexpr

◆ num() [1/4]

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

◆ num() [2/4]

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

◆ num() [3/4]

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

◆ num() [4/4]

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

◆ operator=() [1/2]

template<class T , int NumOrder, int DenOrder>
constexpr DiscreteTransferFunction & controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::operator= ( const DiscreteTransferFunction< 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))
DiscreteTransferFunction & controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::operator= ( const DiscreteTransferFunction< T, NumOrder2, DenOrder2 > &  other)
inline

◆ transfer_function() [1/2]

template<class T , int NumOrder, int DenOrder>
constexpr transfer_function_type & controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::transfer_function ( )
inlineconstexpr

◆ transfer_function() [2/2]

template<class T , int NumOrder, int DenOrder>
constexpr const transfer_function_type & controlpp::DiscreteTransferFunction< T, NumOrder, DenOrder >::transfer_function ( ) const
inlineconstexpr

Friends And Related Symbol Documentation

◆ operator<<

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

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