Controlpp
Loading...
Searching...
No Matches
PadeDelay.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "math.hpp"
5
6namespace controlpp
7{
8
28 template<class T, int NumOrder, int DenOrder=NumOrder>
29 requires(NumOrder <= DenOrder)
32
33 for(int k = 0; k < (NumOrder+1); ++k){
34 result.num().at(k) = pade_num_param(NumOrder, DenOrder, k) * controlpp::pow(-delay, k);
35 }
36
37 for(int k = 0; k < (DenOrder+1); ++k){
38 result.den().at(k) = pade_den_param(NumOrder, DenOrder, k) * controlpp::pow(delay, k);
39 }
40
41 return result;
42 }
43
44} // namespace controlpp
Continuous transfer functions in the s lapace plain.
Definition ContinuousTransferFunction.hpp:28
num_type & num()
Definition ContinuousTransferFunction.hpp:57
den_type & den()
Definition ContinuousTransferFunction.hpp:63
The main namespace for the Control++ library.
Definition Bode.cpp:3
constexpr T pade_den_param(unsigned long m, unsigned long n, unsigned long k)
Calculates the numerator parameters of the pade approximation.
Definition math.hpp:200
constexpr T pade_num_param(std::int32_t m, std::int32_t n, std::int32_t k)
Calculates the numerator parameters of the pade approximation.
Definition math.hpp:165
ContinuousTransferFunction< T, NumOrder, DenOrder > pade_delay(T delay)
Creates a continuous transfer function approximating a delay using the pade approximation.
Definition PadeDelay.hpp:30
constexpr T pow(const T &base, const int &exp)
Power function for integral exponents.
Definition math.hpp:30