MATLAB Answers

Indexing an 6 Dimensional array inside a for loop

37 views (last 30 days)
bugatti79
bugatti79 on 20 Oct 2013
Commented: bugatti79 on 21 Oct 2013
Folks,
I am trying to call in the nth page of a 6D array from page 1 to 6. I am using the following code which is not looping through the 6 pages. nu is a 6D array.
for k=1:6;
for ii=1:size(nu,k);
i=nu(ii);
Calcs{ii}= A.*i ...etc
end
end
I think my ii statement is not correct to index the nth page of 6D array. Any ideas? Thanks in advanced B
  2 Comments
bugatti79
bugatti79 on 21 Oct 2013
Hi dpb,
Thanks for your input. I will note this see how it works. B

Sign in to comment.

Answers (1)

David
David on 20 Oct 2013
Edited: David on 20 Oct 2013
"Folks,
I am trying to call in the nth page of a 6D array from page 1 to 6. I am using the following code which is not looping through the 6 pages. nu is a 6D array.
for k=1:6;
for ii=1:size(nu,k);
i=nu(ii);
Calcs{ii}= A.*i ...etc
end
end
I think my ii statement is not correct to index the nth page of 6D array. Any ideas? Thanks in advanced B"
I assume you are trying to loop through each of the elements along each dimension in the 6D array. If I am correct in my assumption, then I think the problem is as you say. Since nu is a 6D array, you must specify the dimension that is being indexed. In the line you correctly identified as the source of trouble, you are treating nu as if it were only a 1D array. For this to work, you could try reshaping nu into a 2D array, where the elements of each page span their own column. See the code below.
NumDims = ndims(nu);
numPages = size(nu,NumDims);
%Initialize number of elements
numpageElements = 1;
for d=1:NumDims-1
numpageElements = size(nu,d)*numpageElements;
end
%Reshape nu into a N x 6 column matrix.
nunu = reshape(nu,numpageElements,numPages);
and then
%Index through each page
for p=1:6
%Index through the elements on each page
for ii=1:size(:,p)
i = nunu(ii,p);
Calcs{ii} = A.*i ...etc
end
end
You can find more information relevant to your question here: http://www.mathworks.com/help/matlab/math/multidimensional-arrays.html#f1-86846
  1 Comment
bugatti79
bugatti79 on 21 Oct 2013
Hi David,
I have only seen your response now, thanks.
I forgot to mention that each page is an 18*9 matrix and 6 of these. Page 1 matrix, all the elements are the same numeric value. Page 2 matrix, all elements are of same value but different to page 1 and so on to page 6.
I am just repeating the set of calculations 6 times. I will look at the code later. Thanks for your help... B

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!