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 Version History

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 (2021). FOTF Toolbox (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (48)

lilyy song

请 赐教下optimfopid怎么用不起来,输完传递函数,电机plant model 没动静,点optimze就报各种错误

Kamran Iqbal

I downloaded the toolbox. How do I run the gui? The fotf_gui command doesn't work.

YangQuan Chen

Outstanding package that have been widely used world wide! Remind that it can handle MIMO LTI systems.

琪 李


Ur rehman Waheed

excellent work by chinese nation

pengyi pan

George Wang

zehui du

zhizhi liu

zhizhi liu

YangQuan Chen


Bingkuan Yin

Ciro Bermudez Marquez


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

Afshin Ahmadpour

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

Afshin Ahmadpour

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

shilpam malik

please help to install fotf tolbox for matlab

salwan yousif

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

wenchao wang

cheballah fatima

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

Volodymyr Moroz




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?

cui zhanbiao


Thank you very much for this useful toolbox

cui zhanbiao

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

Shahzad Sarwar

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

Chuang Li

abdullah ates

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

Jesus Navarro

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

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

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!