198 lines
11 KiB
Matlab
198 lines
11 KiB
Matlab
%FOTF Toolbox - A MATLAB Toolbox for the modeling, analysis and design of fractional-order systems
|
|
%
|
|
% (c) Professor Dingy\"u Xue, Northeastern University, Shenyang, China
|
|
% Email: xuedingyu@mail.neu.edu.cn
|
|
% Date of last modification, 23 December, 2016
|
|
%
|
|
% This newly modified toolbox is written for the monograph,
|
|
%
|
|
% @BOOK{bkXueDFOCS,
|
|
% Author = {Xue Dingy\"u},
|
|
% Address = {Berlin},
|
|
% Publisher = {de Gruyter Press},
|
|
% Title = {Fractional-order Control Systems - Fundamentals and Numerical Implementations},
|
|
% Year = {2017}
|
|
% }
|
|
%
|
|
% Multivariable fractional-order systems are fully supported in the classes FOTF and FOSS
|
|
% and low-level numerical algorithms are replaced by $O(h^p)$ precision ones.
|
|
% For details in theory and programming, please refer to the monograph.
|
|
|
|
% (I) Special functions and fundamentals in numerical computation
|
|
% beta_c - beta function evaluation for complex arguments
|
|
% common_order - compute the common order
|
|
% fence_shadow - draw the shawdows on the walls
|
|
% fmincon_global - a global constrained optimisation problem solver
|
|
% funmsym - evaluate symbolic matrix functions
|
|
% gamma_c - Gamma function evaluation for complex arguments
|
|
% kronsum - compute Kronecker sum
|
|
% mittag_leffler - symbolic evaluation of Mittag-Leffler functions
|
|
% ml_func - numerical evaluation of Mittag-Leffler functions and derivatives
|
|
% more_sols - find possible all solutions of nonlinear matrix equations
|
|
% more_vpasols - symbolic version of more_sols, high precision solutions
|
|
% new_inv - simple matrix inverse function, not recommended in applications
|
|
%
|
|
%(II) Numerical evaluations of fractional-order derivatives and integrals
|
|
% caputo - computation of Caputo derivatives with interpolation, not recommended
|
|
% caputo9 - evaluation of Caputo derivatives with $O(h^p)$, recommended
|
|
% genfunc - computation of generating function coefficients symbolically
|
|
% get_vecw - computation of $O(h^p)$ weighting coefficients
|
|
% glfdiff0 - evaluation of GL derivatives, not recommended
|
|
% glfdiff - standard evaluation of GL derivatives, with $O(h)$
|
|
% glfdiff2 - evaluation of $O(h^p)$ GL derivatives, not recommended
|
|
% glfdiff9 - evaluation of $O(h^p)$ GL derivatives, recommended
|
|
% glfdiff_fft - evaluation of $O(h^p)$ GL derivatives with FFT, not recommended
|
|
% glfdiff_mat - matrix version of glfdiff, not recommended for large samples
|
|
% glfdiff_mem - GL derivative evaluation with short-memory effect
|
|
% rlfdiff evaluation of RL derivatives, not recommended, use glfdiff9 instead
|
|
%
|
|
%(III) Numerical evaluations of linear fractional-order differential equations
|
|
% caputo_ics - equivalent initial condition reconstruction, called by fode_caputo9
|
|
% fode_caputo0 - simple Caputo FODE solver with nonzero initial conditions
|
|
% fode_caputo9 - $O(h^p)$ solution of Caputo equations with nonzero ICs
|
|
% fode_sol - closed-form solution of FODE with zero initial conditions
|
|
% fode_solm - matrix version of fode_sol, not recommended for large samples
|
|
% fode_sol9 - $O(h^p)$ version of fode_sol
|
|
% ml_step3 - numerical solution of step response of 3-term models
|
|
%
|
|
%(IV) Numerical evaluations of nonlinear fractional-order differential equations
|
|
% INVLAP_new - closed-loop response evaluation with inverse Laplace transform
|
|
% nlfode_mat - matrix-based solutions of implicit nonlinear FODEs
|
|
% nlfode_vec - nonlinear fractional-order extended state space equation solver
|
|
% nlfode_vec1 - a different version of nlfode_vec, not recommended
|
|
% nlfec - $O(h^p)$ corrector solution of nonlinear multi-term FODEs
|
|
% nlfep - $O(h^p)$ predictor solution of nonlinear multi-term fractional-order ODEs
|
|
% pepc_nlfode - numerical solutions of single-term nonlinear FODE with PCPE algorithm
|
|
%
|
|
%(V) Filter design for fractional-order derivatives and systems
|
|
% carlson_fod - design of a Carlson filter
|
|
% charef_fod - design of a Charef filter
|
|
% charef_opt - design of an optimal Charef filter
|
|
% cont_frac0 - continued-fraction interface to irrational functions
|
|
% matsuda_fod - design of Matsuda-Fujii filter
|
|
% new_fod - design of a modified Oustaloup filter
|
|
% opt_app - optimal IO transfer approximation of high-order models
|
|
% ousta_fod - design of a standard Oustaloup filter
|
|
%
|
|
%(VI) FOTF object design and overload functions
|
|
% base_order - find the base order from an FOTF object
|
|
% bode - Bode diagram analysis
|
|
% diag - diagonal FOTF matrix creation and extraction
|
|
% display - overload function to display a MIMO FOTF object
|
|
% eig - find all the poles, including extraneous roots
|
|
% eq - checks whether two FOTF blocks equal or not
|
|
% feedback - overload the feedback function for two FOTF blocks
|
|
% foss_a - convert an FOTF to an extended FOSS object
|
|
% fotf - creation of an FOTF class
|
|
% fotf2cotf - convert an FOTF object into commensurate form
|
|
% fotf2foss - low-level conversion function of FOTF to FOSS object
|
|
% fotfdata - extract all the fields from an FOTF object
|
|
% freqresp - low-level frequency response function of an FOTF object
|
|
% high_order - high-order IO transfer function approximation of FOTF objects
|
|
% impulse - evaluation of impulse response of an FOTF object
|
|
% inv - inverse FOTF matrix
|
|
% isstable - check whether an FOTF object stable or not
|
|
% iszero - check whether an FOTF object is zero or not
|
|
% lsim - time response evaluation to arbitrary input signals
|
|
% margin - compute the gain and phase margins
|
|
% maxdelay - extract maximum delay from an FOTF object
|
|
% mfrd - frequency response evaluation
|
|
% minus - minus operation of two FOTF objects
|
|
% mldivide - left-division function
|
|
% mpower - power of an FOTF object
|
|
% mrdivide - right-division function
|
|
% mtimes - overload function of * operation of two blocks
|
|
% nichols - Nichols chart
|
|
% norm - H2 and Hinf evaluation
|
|
% nyquist - Nyquist plot
|
|
% plus - overload function of + operation of two blocks
|
|
% residue - partial fraction expansion
|
|
% rlocus - root locus analysis
|
|
% sigma - singular value plots
|
|
% simplify - simplification of an FOTF object
|
|
% step - step response
|
|
% uminus - unary minus of an FOTF object
|
|
%
|
|
%(VII) FOSS object design and overload functions
|
|
% bode - Bode diagram analysis
|
|
% coss_aug - FOSS augmentation
|
|
% ctrb - controllability test matrix creation
|
|
% display - overload function to display a MIMO FOSS object
|
|
% eig - compute the poles of a FOSS object
|
|
% eq - checks two FOSS blocks equal or not
|
|
% feedback - overload the feedback function for two FOSS blocks
|
|
% foss - FOSS class creation
|
|
% foss2fotf - low-level conversion from FOSS to FOTF object
|
|
% impulse - evaluation of impulse response of an FOSS object
|
|
% inv - inverse of an FOSS object
|
|
% isstable - check an FOSS object stable or not
|
|
% lsim - time response evaluation to arbitrary input signals
|
|
% margin - compute the gain and phase margins
|
|
% mfrd - frequency response evaluation
|
|
% minreal - minimum realisation of a FOSS object
|
|
% minus - minus operation of two FOTF objects
|
|
% mpower - power of an FOSS object
|
|
% mtimes - overload function of * operation of two blocks
|
|
% nichols - Nichols chart
|
|
% norm - H2 and Hinf evaluation
|
|
% nyquist - Nyquist plot
|
|
% obsv - construct observability test matrix
|
|
% order - find the orders of an FOSS object
|
|
% plus - overload function of + operation of two blocks
|
|
% rlocus - root locus analysis
|
|
% size - find the numbers of inputs, outputs and states
|
|
% ss_extract - extract integer-order state space object from FOSS
|
|
% step - step response
|
|
% uminus - unary minus of an FOSS object
|
|
%
|
|
%(VIII) Simulink models
|
|
% fotflib - Simulink blockset for FOTF Toolbox
|
|
% fotf2sl - multivariable FOTF to Simulink block convertor
|
|
% sfun_mls - S-function version of Mittag-Leffler function
|
|
% slblocks - default Simulink description file
|
|
% c9mvofuz - Simulink model for variable-order fuzzy PID control systems
|
|
% c9mvofuz2 - Simulink model for variable-order fuzzy PID systems with variable delays
|
|
% c10mpdm2 - Simulink model for multivariable PID control system
|
|
% c10mpopt - Simulink model for multivariable parameter optimisation control systems
|
|
% fPID_simu - Simulink model fractional-order PID controller for single-variable system
|
|
%
|
|
%(IX) Fractional-order and other controller design
|
|
% c9mfpid - fractional-order PID controller design with equation solution techniques
|
|
% c9mfpid_con - constraints in optimum FOPID design of FOPDT plants
|
|
% c9mfpid_con1 - constraints in optimum FOPID design of FOIPDT plants
|
|
% c9mfpid_con2 - constraints in optimum FOPID design of FO-FOPDT plants
|
|
% c9mfpid_opt - objective function in optimum FOPID design of FOPDT plants
|
|
% c9mfpid_opt1 - objective function in optimum FOPID design of FOIPDT plants
|
|
% c9mfpid_opt2 - objective function in optimum FOPID design of FO-FOPDT plants
|
|
% ffuz_param - S-function for parameter setting of fuzzy fractional-order PIDs
|
|
% fopid - construct a \fPID{} controller from parameters
|
|
% fpidfun - an example of objective function for optimum fractional-order PIDs
|
|
% fpidfuns - objective function for fractional-order PID controller design
|
|
% fpidtune - design of optimum fractional-order PID controllers
|
|
% gershgorin - draw Nyquist plots with Gershgorin bands
|
|
% get_fpidf - build string expression of the open-loop model
|
|
% mfd2frd - convert MFD data into FRD data
|
|
% optimfopid - GUI for optimum fractional-order PID design
|
|
% optimpid - GUI for optimum integer-order PID design
|
|
% pseuduag - pseudodiagonalisation of multivariable systems
|
|
%
|
|
%(X) Dedicated functions and models for the examples
|
|
% c2exnls - constraint function of an example
|
|
% c8mstep - Simulink model of a multivariable fractional-order system
|
|
% c8mfpid1 - Simulink model of a fractional-order PID control system
|
|
% c8mchaos - vectorised Simulink model for fractional-order Chua system
|
|
% c8mchaosd - data input file for c8mchaos
|
|
% c8mchua - MATLAB description of fractional-order Chua equations
|
|
% c8mchuasim - Simulink model for fractional-order Chua circuit
|
|
% c8mblk2,3,5 - three Simulink models of a linear fractional-order equation
|
|
% c8mcaputo - complicated Simulink model for nonlinear FODE
|
|
% c8mexp2 - simpler Simulink model for nonlinear Caputo equations
|
|
% c8mexp2m - MATLAB description of nonlinear Caputo equation
|
|
% c8mnlf1, c8mnlf2 - two different Simulink models of a nonlinear FODE
|
|
% c8mexp1x - MATLAB function for describing nonlinear Caputo equations
|
|
% c8nleq - MATLAB description of a nonlinear single-term Caputo equation
|
|
% c8mlinc1 - Simulink model of a linear fractional-order Caputo equation
|
|
% c9ef1-c9ef3 - criteria for optimum fractional-order PID controllers
|
|
% c9mplant - Simulink model used for optimpid design
|
|
|