31 lines
1.1 KiB
Matlab
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
|