25 lines
760 B
Matlab
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
|