Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Multidimensional array, extracting the Nth dimension

Asked by David on 20 Jun 2013

Hi all

I have an array of doubles A which has size [6,8,88].

I want to plot the vector A[1,1,:], but I get the following error:

Error using plot. Data may not have more than 2 Dimensions.

I thought that the operation A[1,1,:] would return a simple vector of length 88, as suggested by the tutorial page here

http://www.mathworks.co.uk/help/matlab/ref/colon.html

but it actually has size [1,1,88], which is causing the error.

I've thought of using a loop to extract each element, but this doesn't suit my purpose very well, as I would also like to plot A[i,j,:] for arbitrary i,j, and also perform other operations on these vectors.

Is there a simple way to access the vector A[i,j,:], and have it return a true vector?

I've reproduced the problem with a simpler example, which gives the same error.

A = zeros(3,3,4)
plot(1:4, A(1,1,:))

Sorry for simple question, I'm fairly new at this.

Many thanks for your help

Dave

0 Comments

David

Products

No products are associated with this question.

3 Answers

Answer by Iain on 20 Jun 2013
Accepted answer
 plot(1:4, squeeze(A(1,1,:)))

You might need to transpose the squeezed A, I can't remember :P

2 Comments

David on 20 Jun 2013

This solutions seems to suit my purpose best, many thanks for very fast reply. This forum is amazing!

the cyclist on 20 Jun 2013

A big part of getting a fast, useful reply was that you formulated your question clearly and specifically.

Iain
Answer by the cyclist on 20 Jun 2013

You could use the permute command:

A_plot = permute(A(1,1,:),[3 1 2]);

to shuffle the 3rd dimension to become the first dimension.

0 Comments

the cyclist
Answer by the cyclist on 20 Jun 2013

You could use the reshape command:

A_plot = reshape(A(1,1,:),88,1);

to create reshape to 88x1. More robust, in case the 3rd dimension is not always 88 in length, would be

A_plot = reshape(A(1,1,:),[],1);

which infers the length of the first dimension from the number of elements.

0 Comments

the cyclist

Contact us