CaptainProg
CaptainProg

Reputation: 5690

MATLAB: copy a specific portion of an array

I am trying to copy a few elements from a matrix, but not a whole row, and not a single element.

For example, in the following matrix:

a = 1 2
    3 4
    5 6
    7 8
    9 0

How would I copy out just the following data?

b = 1
    3
    5

i.e. rows 1:3 in column 1 only... I know that you can remove an entire column like this:

b = a(:,1)

... and I appreciate that could just do this and then dump the last two rows, but I'd like to use more streamlined code as I am running a very resource-intensive solution.

Upvotes: 4

Views: 40406

Answers (2)

eternaln00b
eternaln00b

Reputation: 1053

Elements in a matrix in MATLAB are stored in column-major order. Which means, you could even use a single index and say:

b = a(1:3);

Since the first 3 elements ARE 1,3,5. Similarly, a(6) is 2, a(7) is 4 etc. Look at the sub2ind method to understand more:

http://www.mathworks.com/help/techdoc/ref/sub2ind.html

Upvotes: 5

ivancho
ivancho

Reputation: 899

You are not "removing" the second column, you are referencing the other column.

You should read some of the Matlab docs, they provide some help about the syntax for accessing portions of matrices:

http://www.mathworks.com/help/techdoc/learn_matlab/f2-12841.html#f2-428

Upvotes: 1

Related Questions