function alg42 = alg42(A,ll) | %***************************% | % General Information. % | %***************************% | % Synopsis: | % alg42 = alg42(A) | % Input: | % A = the mxn initial matrix of interest. | % ll=n-m+1 | % Output: | % alg42 = improvement of Algorithm 1 according to Theorem 6. | % This function follows Algorithm 2. | % The correct performance of alg42 requires the presence of yltXl function. | | Astar = A’; | m,n = size(A); | | f = A(1,1:ll); | E0 = zeros(1,m); | product = f’*f; | | for i = 1:ll | E0(1,i) = sum(diag(product,i-1)); | end | E1=E0; | E = toeplitz(E1); | | G0=zeros(ll-1); | Gnew = hankel(zeros(1,ll-2) f(end), flip(f(1,2:end))); | for i = 1:ll-1 | Gkoutnew = G0+Gnew(:,i)*Gnew(i,:); | G0=Gkoutnew; | end | | Gmnew = G0; | fullmatrix = zeros(m-ll+1) zeros(m-ll+1,ll-1);zeros(ll-1,m-ll+1) Gmnew; | Gkout = E-fullmatrix; | Y02 = Gkout∖A; | X02 = Y02’; | | for l = m+1:n-1 | yltout,Xlout = yltXl(Y02,X02,Astar,l,m,n); | Y02 = yltout; | X02 = Xlout; | end | | alg42 = X02 - Astar*Y02(:,n)*Y02(:,n)’/(1+Astar(n,:)*Y02(:,n)); |
|