Indexing in a matrix vs vector

Why can we write A(1,2) for a nx2 matrix, with n>1, and we cannot write i=1; x(i,2) for a vector x = [x1 x2]?
It only accepts x(i+1), but I need to iterate the index i over the rows and not the columns, for any nx2 matrix with n>=1.
Thank you in advance.

 Respuesta aceptada

dpb
dpb el 12 de Nov. de 2025
There's nothing preventing addressing a row vector by its row, column indices...
x=1:3;
for i1=1:height(x)
for j1=1:width(x)
disp([i1 j1 x(i1,j1)])
end
end
1 1 1 1 2 2 1 3 3
One only gets in trouble when trying to go outside array bounds...
x(2,1)
Index in position 1 exceeds array bounds. Index must not exceed 1.

4 comentarios

Luisa
Luisa el 12 de Nov. de 2025
Thank you. Maybe I am doing wrong elsewhere.
dpb
dpb el 12 de Nov. de 2025
Editada: dpb el 12 de Nov. de 2025
A common oversight in a looping construct is to have an "I+1" reference in a loop that counts i to the size in the given dimension. That will end up addressing outside the array bounds when it reaches the end.
Another possibility in your case would be if the expected row vector were a column vector instead by an inadvertent change in orientation.
There are many other possibilities as well that lead to a similar result, of course, but that's the sort of thing to look for.
Set a breakpoint on error and it will stop when the error occurs and you can then look at where you are and what are the values of various things that affect the indices and discover the source of the logic error...
Luisa
Luisa el 12 de Nov. de 2025
Editada: Luisa el 12 de Nov. de 2025
Yes, I had made a syntax error in the code in another place, and it contested as "Index in position 1 exceeds array bounds. Index must not exceed 1."
Thank you so much.
dpb
dpb el 12 de Nov. de 2025
Glad to help and that you found it...enjoy!

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 12 de Nov. de 2025
i = 1;
x = [10, 20]
x = 1×2
10 20
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
x(i, 2) % Display second column of first (and only) row of a row vector.
ans = 20
I'm not seeing the problem. It works. You must be describing something different than your actual code.
Contrary to what you said, it will not accept x(i+1, 2), which is x(2,2), because there is no second row of x. Remember row is the first index and column is the second index.
I encourage you to use descriptive names like row and col instead of i and j when using indexes in arrays. It will avoid a lot of mistakes.

1 comentario

Luisa
Luisa el 12 de Nov. de 2025
Thank you, I had made a syntax error in the code in another place.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 12 de Nov. de 2025

Comentada:

dpb
el 12 de Nov. de 2025

Community Treasure Hunt

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

Start Hunting!

Translated by