function[A,degA] = spoldi_e(G,degG,C,degC,EPS) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% [A,degA]=spoldi_e(G,degG,C,degC,EPS) % %% % %% MATLAB function "spoldi_e" extract % %% given left divisor G from any % %% polynomial matrix C % %% C = G . A % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % S. Pejchova, August 5th 1994 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % size of C % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if nargin==4 EPS=1e-8; end [rG,cG]=polsize(G,degG); [rC,cC]=polsize(C,degC); [m,n]=size(C); [k,l]=size(G); if m ~=k if kdegE J=zeros(raE,caA-caE); E=[E J]; end end A = [A;E]; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % setting degA % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% cA=caA/(degA+1); if degA>0 while A(:,cA*degA+1:cA*(degA+1))==zeros(rA,cA) A(:,cA*degA+1:cA*(degA+1))=[]; degA=degA-1; if degA<1,return,end end end