Functionality adapted from the MATLAB tensor toolbox (http://www.sandia.gov/~tgkolda/TensorToolbox/index-2.6.html).

1 |

`A` |
An array. |

`v` |
A list of the same length as |

`dim` |
A vector specifying the dimensions for the multiplication. |

Let `A`

be a tensor with dimensions *d_1 x d_2 x … x d_p* and let `v`

be a vector of length
*d_i*. Then the tensor-vector-product along the *i*-th dimension is
defined as

* B[j_1, …
,j_{i-1},j_{i+1},…,j_d] = ∑ A[j_1, …, j_{i-1}, i, j_{i+1},
…, j_d] v[i].*

It can hence be seen as a generalization of the matrix-vector product.

The tensor-vector-product along several dimensions between a tensor `A`

and multiple vectors `v_1,...,v_k`

(*k ≤ p*) is defined as a
series of consecutive tensor-vector-product along the different dimensions.
For consistency, the multiplications are calculated from the dimension of the
highest order to the lowest.

An array, the result of the multiplication.

B. W. Bader and T. G. Kolda. Algorithm 862: MATLAB tensor classes for fast algorithm prototyping, ACM Transactions on Mathematical Software 32(4):635-653, December 2006.

`UMPCA`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ```
# create a three-mode tensor
a1 <- seq(0,1, length.out = 10)
a2 <- seq(-1,1, length.out = 20)
a3 <- seq(-pi, pi, length.out = 15)
A <-a1 %o% a2 %o% a3
dim(A)
# multiply along different dimensions
dim(ttv(A = A, v = list(rnorm(10)), dim = 1))
dim(ttv(A = A, v = list(rnorm(20)), dim = 2))
dim(ttv(A = A, v = list(rnorm(15)), dim = 3))
# multiply along more than one dimension
length(ttv(A = A, v = list(rnorm(10), rnorm(15)), dim = c(1,3)))
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.