I have a problem that requires assigning values to an array of arbitrary dimensions.

For a given integer j, I pre-allocate a regular j-dimensional array such that

where are integers for . Such an array in MATLAB looks like:

`Array = NaN.*ones( repmat( d , 1 , j ) ) ;`

The problem is assigning values for elements in this array. Specifically, given are vectors of length , I require all combinations of element-wise multiplication for each of these vectors, where each result is assigned to .

For the simplest case , assuming vectors are stored in cell-arrays, I can do this quite easily using loops:

`for m = 1:d for n = 1:d Array( m , n ) = v{ 1 }( m ).*v{ 2 }( n ) ; endend`

But, a "psudeo-code" implementation with j loops would look something like:

`for m( 1 ) = 1:d ... for m( j ) = 1:d Array( m( 1 ) , ... , m( j ) ) = v{ 1 }( m( j ) ).* ... .*v{ j }( m( j ) ) ; end ...end`

The indexing of now becomes variable, which I have had no success in implementing.

Does there exist a way of assigning values to an array of arbitrary dimensions in MATLAB in this manner, or perhaps a neater method?

## Best Answer