3 340 views (last 30 days)

I'm trying to extract the first row from my matrix and put in a vector like [m,n]

my matrix is 2x5 size.

but I'm getting errors, Indexing cannot yield multiple results.

Please any solution to that?

Hikaru
on 5 Feb 2015

You have the wrong syntax.

Lets say A is your 2x5 matrix.

A = rand(2,5)

Then to extract the first row, you simply use:

V = A(1,:);

Hikaru
on 5 Feb 2015

I'm not exactly sure if I understood your question correctly. How are you supposed to get 1x2 vector when the first row contains 5 elements? Did you mean that your original matrix is 5x2 matrix (i.e. 5 rows and 2 columns)?

You got the error 'Indexing cannot yield multiple results' because you tried to assign the values to m and n in one command line.

Assuming the above, why don't you try:

A = rand(5,2)

V = A(1,:); % extract the first row and assign it to V

m = V(1)

n = V(2)

[m, n] % this is essentially V, but if this is what you wanted

Stephen Cobeldick
on 5 Feb 2015

MathWorks Support Team
on 27 Nov 2018

To extract any row from a matrix, use the colon operator in the second index position of your matrix. For example, consider the following:

A = [1 2 3; 4 5 6];

row1 = A(1,:)

row2 = A(2,:)

“row1” is the first row of “A”, and “row2” is the second row.

For more on basic indexing, see:

Stephen Porter
on 28 Nov 2020

Stephen Cobeldick
on 5 Feb 2015

Edited: Stephen Cobeldick
on 5 Feb 2015

What you are trying to do is create a comma-separated list from a numeric vector. As far as I know, there is no inbuilt way to achieve this. This question has also been asked before , you might find other discussions on this online.

Usually in MATLAB it makes a lot more sense to keep your data together in arrays, so it may not be necessary to do this multiple-assignment. You should consider this. However if it really is necessary to do this multiple assignment, then you could:

- Assign individually: n = A(1,1); m = A(1,2);
- Assign via a cell array:

B = num2cell(A(1,1:2));

[n,m] = B{:};

Although the first option is much clearer!

EDIT: on re-reading your question, it seems that perhaps all you are after is just the vector of the first row of A, in which case you do not need to assign to two separate values first, as you can just extract the vector directly:

V = A(1,:);

If you just need the row (vector), then there is no need in MATLAB to create intermediate variables m,n.

naazneen vhora
on 11 May 2018

if i wanted to extract a certain column without the first element how would i do that.

for example, if my column has the values: 2,3,4,5,6... and i want to access all the values in the column after 2 how would i do that? Yes i mean column for typing reasons i wrote it horizontally.

Stephen Cobeldick
on 11 May 2018

Using basic MATLAB indexing:

M(2:end,C)

for column C of matrix M. Basic MATLAB indexing is explained in the introductory tutorials:

SANTOSH MOHAPATRA
on 17 Apr 2019

I have a matrix of dimension(256, 32), means rows=256 and column=32. I want to select 128 rows of the particular matrix and make another Vector of dimension (1, 256*32) means to represent all the elements in a single row. How can I do that?

Please help...can I apply a loop program for it??

Stephen Cobeldick
on 17 Apr 2019

Abhishek Mishra
on 21 Oct 2020

You can combine indexing with assignment to change array values to equal other elements. For example, this code would change the value of x(1) to x(2):

x(1) = x(2)

Try changing the first column of data to the second column of data.

Answer for this please

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

Start Hunting!
## 1 Comment

## Direct link to this comment

https://se.mathworks.com/matlabcentral/answers/175231-extract-first-row-from-matrix#comment_442719

⋮## Direct link to this comment

https://se.mathworks.com/matlabcentral/answers/175231-extract-first-row-from-matrix#comment_442719

Sign in to comment.