How to sort points for plotting in MATLAB?
28 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ángel González
el 23 de Ag. de 2018
Editada: MathWorks Support Team
el 3 de Sept. de 2020
Hello! I've got a little question about plotting points. In my project, I'm getting x and y coordinates and plotting them just when I read them from the socket, and I get something like this:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/194313/image.png)
Just after plotting the coordinates I'm indexing them in two different vectors (one for x coordinates and the other for y coordinates). The problem is, when I try to plot them again in another script (or in another figure) the result is not what I expected.
The code I use for plotting the points the second time is:
figure()
for i=1:1000 %1000 is the length of x_vector and y_vector
plot(x_vector(i), y_vector(i), 'o')
hold on
axis([0 1920 0 1080]);
set(gca, 'ydir', 'reverse', 'xaxislocation', 'top')
end
And this is the result of the previous code:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/194314/image.png)
I guess that the second time I try to plot the two vectors plot is trying to print some linear function through some regression instead of printing the cloud of points I expect.
Thank you
11 comentarios
Jan
el 23 de Ag. de 2018
Maybe replace
x_vector = sort([x_vector x]);
y_vector = sort([y_vector y]);
by
[x_vector, index] = sort([x_vector x]);
yTemp = [y_vector y];
y_vector = yTemp(index);
dpb
el 23 de Ag. de 2018
That's calling sort repetitively every iteration...there's no indication of needing them sorted; if do, far more efficient to wait until done collecting and then sort the whole vector once.
Keeping and reordering y based on order of sorted x is, of course, necessry to keep the association between the two.
Alternatively, one could do slightly differently as
xy=[];
while collecting()
% get x, y
xy=[xy; [x y]];
...
end
xy=sortrows(xy);
and will have x,y in two columns in the one arrray sorted by increasing x
Respuesta aceptada
Más respuestas (1)
Afshin Aghayan
el 9 de Oct. de 2019
you can use this code for displaying any data in the form of [x, y, f(x,y)] or data with coordinate
0 comentarios
Ver también
Categorías
Más información sobre Annotations 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!