LEFT_ORTH_WITH_GAUGE Left orthogonalization with storage of gauge matrices Given a right orthogonal X, compute a left orthogonalization and keep the gauge matrices that relates them. The i-th core of xR unfold(xR.U{i},'left') is equal to the transformed i-th core of xL kron(eye(n(i)),inv(G{i-1}))*unfold(xL.U{i},'left')*G{i} (where fore i=1 and i=d, G{i} = 1). Or, equivalently tensorprod_ttemps( tensorprod_ttemps( xL.U{i}, G{i}', 3), inv(G{i-1}), 1) equals xR.U{i}. See also GAUGE_MATRICES
0001 function [xL, G] = left_orth_with_gauge( xR ) 0002 % LEFT_ORTH_WITH_GAUGE Left orthogonalization with storage of gauge matrices 0003 % 0004 % Given a right orthogonal X, compute a left orthogonalization and keep 0005 % the gauge matrices that relates them. 0006 % 0007 % The i-th core of xR 0008 % unfold(xR.U{i},'left') 0009 % is equal to the transformed i-th core of xL 0010 % kron(eye(n(i)),inv(G{i-1}))*unfold(xL.U{i},'left')*G{i} 0011 % (where fore i=1 and i=d, G{i} = 1). 0012 % 0013 % Or, equivalently 0014 % tensorprod_ttemps( tensorprod_ttemps( xL.U{i}, G{i}', 3), inv(G{i-1}), 1) 0015 % equals 0016 % xR.U{i}. 0017 % 0018 % See also GAUGE_MATRICES 0019 0020 % TTeMPS Toolbox. 0021 % Michael Steinlechner, 2013-2016 0022 % Questions and contact: michael.steinlechner@epfl.ch 0023 % BSD 2-clause license, see LICENSE.txt 0024 0025 xL = xR; 0026 G = cell(xR.order-1, 1); 0027 % left orthogonalization till pos (from left) 0028 for i = 1:xR.order-1 0029 [xL, G{i}] = orth_at( xL, i, 'left' ); 0030 end 0031 0032 end