# ttl: Tensor Times List In jamesyili/rTensor: Tools for tensor analysis and decomposition

## Description

Contracted (m-Mode) product between a Tensor of arbitrary number of modes and a list of matrices. The result is folded back into Tensor.

## Usage

 `1` ```ttl(tnsr, list_mat, ms = NULL, transpose = FALSE) ```

## Arguments

 `tnsr` Tensor object with K modes `list_mat` a list of matrices `ms` a vector of modes to contract on (order should match the order of `list_mat`) `transpose` if matrices should be transposed before multiplication

## Details

Performs `ttm` repeated for a single Tensor and a list of matrices on multiple modes. For instance, suppose we want to do multiply a Tensor object `tnsr` with three matrices `mat1`, `mat2`, `mat3` on modes 1, 2, and 3. We could do `ttm(ttm(ttm(tnsr,mat1,1),mat2,2),3)`, or we could do `ttl(tnsr,list(mat1,mat2,mat3),c(1,2,3))`. The order of the matrices in the list should obviously match the order of the modes. This is a common operation for various Tensor decompositions such as CP and Tucker. For the math on the m-Mode Product, see Kolda and Bader (2009).

## Value

Tensor object with K modes

## Note

The returned Tensor does not drop any modes equal to 1.

## References

T. Kolda, B. Bader, "Tensor decomposition and applications". SIAM Applied Mathematics and Applications 2009.

`ttm`
 ```1 2 3 4 5``` ```tnsr <- new("Tensor",3L,c(3L,4L,5L),data=runif(60)) lizt <- list('mat1' = matrix(runif(30),ncol=3), 'mat2' = matrix(runif(40),ncol=4), 'mat3' = matrix(runif(50),ncol=5)) ttl(tnsr,lizt,ms=c(1,2,3)) ```