init
This commit is contained in:
30
FOTF Toolbox/@fotf/mtimes.m
Normal file
30
FOTF Toolbox/@fotf/mtimes.m
Normal file
@ -0,0 +1,30 @@
|
||||
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
|
||||
Reference in New Issue
Block a user