FractionOrderSystem/FOTF Toolbox/@fotf/mtimes.m

31 lines
1.1 KiB
Matlab

function G=mtimes(G1,G2)
% mpower - product of two FOTF objects, series connection
%
% G=G1*G2
%
% G1, G2 - FOTF objects
% G - returns the product of the two FOTF objects
% Copyright (c) Dingyu Xue, Northeastern University, China
% Last modified 28 March, 2017
% Last modified 18 May, 2022
G1=fotf(G1); G2=fotf(G2);
if numel(G1)==1 && numel(G2)==1, G=sisofotftimes(G1,G2);
else, [n1,m1]=size(G1); [n2,m2]=size(G2);
if m1==n2, G=fotf(zeros(n1,m2));
for i=1:n1, for j=1:m2
for k=1:m1, G(i,j)=G(i,j)+sisofotftimes(G1(i,k),G2(k,j));
end, end, end
elseif n1*m1==1, G=fotf(zeros(n2,m2)); % if G1 is scalar
for i=1:n2, for j=1:m2, G(i,j)=G1*G2(i,j); end, end
elseif n2*m2==1, G=fotf(zeros(n1,m1)); % if G2 is scalar
for i=1:n1, for j=1:m1, G(i,j)=G2*G1(i,j); end, end
else
error('The two matrices are incompatible for multiplication')
end, end, end
% product of two SISO FOTF objects
function G=sisofotftimes(G1,G2)
G=fotf(G1.den*G2.den,G1.num*G2.num); G=simplify(G);
G.ioDelay=G1.ioDelay+G2.ioDelay;
end