function[C,degC] = spolcom(A,degA,B,degB) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MATLAB function spolcom compose % % ONE polynomial matrix from two % % polynomial matrices C = [A B] % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % S. Kolevova, June 10ht 1992 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % degC % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [rA,cA]=polsize(A,degA); [rB,cB]=polsize(B,degB); if rA ~=rB error('spolcom: Inconsistent dimensions of input matrices'); end degC=max(degA,degB); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % size of C % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % cA, cB - basic number of columns % in the primary matrices % kA, kB - column number A, B kA = cA*(degA+1); kB = cB*(degB+1); cC = cA + cB; kC = cC*(degC+1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compose the output matrix % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% C = zeros(rA,kC); for i=1:(degC+1) for j=1:cC if j<= cA if ((i-1)*cA+j) <= kA C(:,(i-1)*cC+j) = A(:,(i-1)*cA+j); end else if ((i-1)*cB+j-cA)<= kB C(:,(i-1)*cC+j) = B(:,(i-1)*cB+j-cA); end end end end