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

New to MATLAB?

Multidimensional array, extracting the Nth dimension

Asked by David

David

on 20 Jun 2013
Accepted Answer by Iain

Iain

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

David

Products

No products are associated with this question.

3 Answers

Answer by Iain

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

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

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

Iain

Answer by the cyclist

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

the cyclist

Answer by the cyclist

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

the cyclist

Contact us