Home > tt2 > core > ten_conv.m

ten_conv

PURPOSE ^

Tensor-by-matrix multiplication of three-dimensional tensor

SYNOPSIS ^

function [new_core] = ten_conv(core, k, mat)

DESCRIPTION ^

Tensor-by-matrix multiplication of three-dimensional tensor
   [NEW_CORE]=TEN_CONV(CORE,K,MAT) Tensor-by-matrix multiplication of 
   three-dimensional tensor CORE over mode K with matrix  MAT


 TT-Toolbox 2.2, 2009-2012

This is TT Toolbox, written by Ivan Oseledets et al.
Institute of Numerical Mathematics, Moscow, Russia
webpage: http://spring.inm.ras.ru/osel

For all questions, bugs and suggestions please mail
ivan.oseledets@gmail.com
---------------------------

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [new_core] = ten_conv(core, k, mat)
0002 %Tensor-by-matrix multiplication of three-dimensional tensor
0003 %   [NEW_CORE]=TEN_CONV(CORE,K,MAT) Tensor-by-matrix multiplication of
0004 %   three-dimensional tensor CORE over mode K with matrix  MAT
0005 %
0006 %
0007 % TT-Toolbox 2.2, 2009-2012
0008 %
0009 %This is TT Toolbox, written by Ivan Oseledets et al.
0010 %Institute of Numerical Mathematics, Moscow, Russia
0011 %webpage: http://spring.inm.ras.ru/osel
0012 %
0013 %For all questions, bugs and suggestions please mail
0014 %ivan.oseledets@gmail.com
0015 %---------------------------
0016 n1=size(core,1);
0017 n2=size(core,2);
0018 n3=size(core,3);
0019 
0020 if ( k == 1 ) 
0021   core=reshape(core,[n1,n2*n3]);
0022   core=mat'*core;
0023   r1=size(core,1);
0024   new_core  = reshape(core,r1,n2,n3);
0025 elseif ( k == 2)
0026   core=reshape(permute(core,[1,3,2]),[n1*n3,n2])*mat;
0027   r2=size(core,2);
0028   core=reshape(core,n1,n3,r2);
0029   new_core=permute(core,[1,3,2]);
0030 elseif ( k == 3)
0031   core=reshape(core,[n1*n2,n3])*mat;
0032   r3=size(core,2);
0033   new_core = reshape(core,n1,n2,r3);
0034 end
0035 return
0036 end

Generated on Wed 08-Feb-2012 18:20:24 by m2html © 2005