0001 function z = plus( x, y )
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 rx = x.rank;
0015 ry = y.rank;
0016 nx = x.size;
0017
0018 z = TTeMPS( cell(1, x.order) );
0019
0020
0021 p = size(x.U{1},4);
0022 tmp = zeros( 1, nx(1), rx(2)+ry(2), p );
0023 tmp( 1, :, 1:rx(2), : ) = x.U{1};
0024 tmp( 1, :, rx(2)+1:end, : ) = y.U{1};
0025 z.U{1} = tmp;
0026
0027
0028 for i = 2:x.order-1
0029
0030 p = size(x.U{i},4);
0031 tmp = zeros( rx(i)+ry(i), nx(i), rx(i+1)+ry(i+1), p);
0032 tmp( 1:rx(i), :, 1:rx(i+1), :) = x.U{i};
0033 tmp( rx(i)+1:end, :, rx(i+1)+1:end, :) = y.U{i};
0034 z.U{i} = tmp;
0035 end
0036
0037
0038 p = size(x.U{end},4);
0039 tmp = zeros( rx(end-1)+ry(end-1), nx(end), 1, p );
0040 tmp( 1:rx(end-1), :, 1, : ) = x.U{end};
0041 tmp( rx(end-1)+1:end, :, 1, : ) = y.U{end};
0042 z.U{end} = tmp;
0043 end