File Exchange

image thumbnail

FOTF Toolbox

version 1.3 (2.31 MB) by Dingyu Xue
A collection of MATLAB files for fractional calculus and fractional-order control


Updated 25 Jul 2017

View License

A companion with the book. Dingyu Xue. Fractional-order Control Systems - Fundamentals and Numerical Implementations. Berlin: de Gruyter, 2017.
Also a standard toolbox for fractional calculus and fractional-order control.
(1) High precision algorithms are provided for fractional derivatives and fractional differential equations;
(2) Two classes, FOTF and FOSS, are provided to fully support the modelling, analysis and design of multivariable fractional-order systems;
(3) A Simulink blockset, fotflib, is provided. Together with the modelling schemes proposed, fractional-order systems of any complexity can be modeled and simulated.

Cite As

Dingyu Xue (2019). FOTF Toolbox (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (38)



The 'optimfopid.fig' issue is solved by reinstalling the FOTF toolbox.

Hello . I want to solve a fractional differential equation with FOTF so that its input is exponential. Please guide me! Thanks

Hello . I want to solve a fractional differential equation with Fouf so that its input is exponential. Please guide me! Thanks

Haiyong Qin

Great work! Thanks very much, Prof. Xue

shuai lyu

King Thang

please help to install fotf tolbox for matlab

i have problem when i use the following command
sys=fotf([2012.4087 107.2882 1.0305],[1.8063 0.93529 0],[1],[0]);
opt = stepDataOptions('InputOffset',-1.5,'StepAmplitude',-2);


the error are Undefined operator '/' for input arguments of type 'ltioptions.step'.

Error in fotf/step (line 12)
if nargin==1, t=[0:0.2:10]'; elseif length(t)==1, t=0:t/100:t; end

Error in test (line 5)

Wei Gao

I can not download FOTF toolbox. You can send it to me?

hua chen


Thanks for the toolbox. I'm having a problem when computing the unit feedback of a FOTF transfer function with time delay. The error message is

Error using fotf/feedback (line 19)
delay in incompatible

How can i obtain the closed loop transfer function of a FOTF with time delay ?

ce zhao

thanks very much!They are very useful for my study.

Ti Mi

Thank you!!! :)

Dingyu Xue

Sorry mohammed for the late response. e-22 like values cannot be handled under the double precision framework.


when I use FOTF TOOL G=fotf([1.1 1.9 0.4],[1.8 0.5 0],[0.8 2],[1.2 0]), I keep getting the error:Cannot redefine class 'fotf' without a call to 'clear classes'.
classdef fotf
num, nn, den, nd, ioDelay
function G=fotf(a,na,b,nb,T)
if isa(a,'fotf'), G=a;
elseif isa(a,'foss'), G=foss2fotf(a);
elseif nargin==1 & (isa(a,'tf')|isa(a,'ss')|isa(a,'double')),
a=tf(a); [n1,m1]=size(a); G=[]; D=a.ioDelay;
for i=1:n1, g=[]; for j=1:m1,%D(i,j)=a(i,j).ioDelay;
[n,d]=tfdata(tf(a(i,j)),'v'); nn=length(n)-1:-1:0;
nd=length(d)-1:-1:0; g=[g fotf(d,nd,n,nn,D(i,j))];
end, G=[G; g]; end
elseif nargin==1 & a=='s', G=fotf(1,0,1,1,0);
else, ii=find(abs(a)<eps); a(ii)=[]; na(ii)=[];
ii=find(abs(b)<eps); b(ii)=[]; nb(ii)=[];
if length(b)==0, b=0; nb=0; end
if nargin==4, T=0; end
G.num=b; G.den=a; G.nn=nb; G.nd=na; G.ioDelay=T;
end, end, end, end




Thank you very much for this valuable tool,
however, when I using tiny numbers (let say e-22) in a matrix "a" of "fotf(a,na,b,nb)" it just ignores this value, is that something can be sorted?


Thank you very much for this useful toolbox

please help me
I have fractional PD controller like this form

Gc(s)=kp[1+kds]^y (y=gamma .it is not alfa or lamda).
how i can simulate it?
please help me

How can we calculate the Lyapunov Exponents of a system of fractional differential equations?

Chuang Li

Thank you very much for this really useful toolbox.


x x

x x

Genchen Li

Thanks a lot,Prof Xue!My undergraduate design is about fractional-order linear sysytems and your book helps me remarkably.

Dingyu Xue

Dear Jesus Navarro
Thanks for pointing out the bug. In the original code, u supposes to be a column-based matrix for each input signal. The command lsim(G,u',t) should be used.
Therefore, it is not convinient in this way. To remove the bug, the first three lines of the code can be rewritten as follows, such that the command lsim(G,u,t) can also be used

[n,m]=size(G); t0=t(1); t1=t(end); [nu,mu]=size(u);
if nu==m & mu==length(t), u=u.'; end
if nargout==0, lsim(tf(zeros(n,m)),'w',zeros(size(u)),t); end

So far I like what you have contributed. I am having one issue. Whenever I create a fotf with t=1:0.001:10; and u=sin(t.^2); and run lsim(G,u,t), I keep getting the error:

"Index exceeds matrix dimensions."

and it displays:

Error in fode_sol9 (line 10)

Error in fotf/lsim (line 6) y2=fode_sol9(g.den,g.nd,g.num,g.nn,uu,t,5);

I wanted to make sure if the code you have submitted is correct or maybe there is something that needs to be changed slightly. Thank you!

YongGe Yang



Some bugs are fixed; Suggestions from Professor Igor Podlubny are acccepted, and a set of benchmark problems for FODEs is updated and a paper is modified, with Simulink modelling schemes.

Updated for the book "Dingyu Xue. Fractional-order Control Systems - Fundamentals and Numerical Implementations. Berlin: de Gruyter", scheduled for printing TODAY (2 June, 2017). Some of the files are updated and all the files are now with comments.

The comments on syntax to all the functions are added. The compatibility to earlier versions of MATLAB are supported.

MATLAB Release Compatibility
Created with R2016b
Compatible with any release
Platform Compatibility
Windows macOS Linux