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