FractionOrderSystem/FOTF Toolbox/@foss/foss2fotf.m

25 lines
760 B
Matlab

function G1=foss2fotf(G)
% foss2fotf - convert an FOSS object to FOTF one
%
% G1=foss2fotf(G)
%
% G - an FOSS object
% G1 - an equivalent FOTF object
% Copyright (c) Dingyu Xue, Northeastern University, China
% Last modified 28 March, 2017
% Last modified 18 May, 2022
[n,m]=size(G); G1=fotf(zeros(n,m));
G0=ss_extract(G); G0=tf(G0); key=length(G.alpha)>1;
T=G.ioDelay; if isscalar(T), T=T*ones(n,m); end
if key~=0
n0=G.alpha; n1=n0(end:-1:1); n2=0;
for i=1:length(n1), n2(i+1)=n2(i)+n1(i); end
n2=n2(end:-1:1);
end
for i=1:n, for j=1:m, g=G0(i,j);
[num,den]=tfdata(g,'v');
if key==0, n2=((length(den)-1):-1:0)*G.alpha; end
h=fotf(den,n2,num,n2,T(i,j)); h=simplify(h); G1(i,j)=h;
end, end, end