0001 function z = cat( mu, x, y )
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 rx = x.rank;
0016 ry = y.rank;
0017 nx = x.size;
0018 ny = y.size;
0019
0020
0021 z = TTeMPS( cell(1, x.order) );
0022
0023
0024 if mu == 1
0025 p = size(x.U{1},4);
0026 tmp = zeros( 1, nx(1)+ny(1), rx(2)+ry(2), p );
0027 tmp( 1, 1:nx(1), 1:rx(2), : ) = x.U{1};
0028 tmp( 1, nx(1)+1:end, rx(2)+1:end, : ) = y.U{1};
0029 z.U{1} = tmp;
0030 else
0031 p = size(x.U{1},4);
0032 tmp = zeros( 1, nx(1), rx(2)+ry(2), p );
0033 tmp( 1, :, 1:rx(2), : ) = x.U{1};
0034 tmp( 1, :, rx(2)+1:end, : ) = y.U{1};
0035 z.U{1} = tmp;
0036 end
0037
0038
0039 for i = 2:x.order-1
0040 if mu == i
0041 p = size(x.U{i},4);
0042 tmp = zeros( rx(i)+ry(i), nx(i)+ny(i), rx(i+1)+ry(i+1), p);
0043 tmp( 1:rx(i), 1:nx(i), 1:rx(i+1), :) = x.U{i};
0044 tmp( rx(i)+1:end, nx(i)+1:end, rx(i+1)+1:end, :) = y.U{i};
0045 z.U{i} = tmp;
0046 else
0047
0048 p = size(x.U{i},4);
0049 tmp = zeros( rx(i)+ry(i), nx(i), rx(i+1)+ry(i+1), p);
0050 tmp( 1:rx(i), :, 1:rx(i+1), :) = x.U{i};
0051 tmp( rx(i)+1:end, :, rx(i+1)+1:end, :) = y.U{i};
0052 z.U{i} = tmp;
0053 end
0054 end
0055
0056
0057 if mu == x.order
0058 p = size(x.U{end},4);
0059 tmp = zeros( rx(end-1)+ry(end-1), nx(end)+ny(end), 1, p );
0060 tmp( 1:rx(end-1), 1:nx(end), 1, : ) = x.U{end};
0061 tmp( rx(end-1)+1:end, nx(end)+1:end, 1, : ) = y.U{end};
0062 z.U{end} = tmp;
0063 else
0064 p = size(x.U{end},4);
0065 tmp = zeros( rx(end-1)+ry(end-1), nx(end), 1, p );
0066 tmp( 1:rx(end-1), :, 1, : ) = x.U{end};
0067 tmp( rx(end-1)+1:end, :, 1, : ) = y.U{end};
0068 z.U{end} = tmp;
0069 end
0070 end