Borrar filtros
Borrar filtros

How can I create a new matrix with x and y coordinates using a for loop?

1 visualización (últimos 30 días)
Lets say I have a matrix A like this:
A=
0 0 1 0 0 0
0 0 0 0 1 0
0 1 0 0 0 1
I want to create a for loop in which this loop creates a new matrix like this
B=
1 3 1
2 5 2
3 2 3
4 6 3
The first column will be the ones showed in the matrix A(point 1,2,3,4) and the second and third columns will be the x and y coordinates of those points(point 1 is at 3 in the x direction and 1 in the y direction). Is it possible?

Respuesta aceptada

Paul
Paul el 18 de En. de 2014
Editada: Paul el 18 de En. de 2014
[y,x]=find(A==1);
num=length(x);
B=[(1:num)',x,y];
If you want to sort the points the way you described do for example this:
[y,x]=find(A==1);
num=length(x);
xy=sortrows([x,y],2)
B=[(1:num)',xy]
  3 comentarios
Paul
Paul el 18 de En. de 2014
Editada: Paul el 18 de En. de 2014
Yes but why, this is easier. You can do it like this:
p=1;
[row,col] = size(A);
for i = 1:row
for j=1:col
if(A(i,j)==1)
B(p,:)=[p,j,i];
p=p+1;
end
end
end
Sebastian
Sebastian el 18 de En. de 2014
This works perfect for me, Thank you Paul!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by