Sequentielle Verbindungs-Punkte in 2D in Matlab
Ich Frage mich, ob Sie könnte mich beraten wie ich eine Verbindung herstellen können mehrere Punkte zusammen, die genau eins nach dem anderen.
Übernehmen:
data =
x y
------------------
591.2990 532.5188
597.8405 558.6672
600.0210 542.3244
606.5624 566.2938
612.0136 546.6825
616.3746 570.6519
617.4648 580.4575
619.6453 600.0688
629.4575 557.5777
630.5477 584.8156
630.5477 618.5906
639.2696 604.4269
643.6306 638.2019
646.9013 620.7697
652.3525 601.1584
"Daten" ist-Koordinate der Punkte.
Nun möchte ich verbinden(plot) der erste Punkt(1. array) zum zweiten Punkt, der zweite Punkt, den Dritten Punkt und so weiter.
Bitte beachtet, dass plot(data(:,1),data(:,2))
geben mir das gleiche Ergebnis. Jedoch, ich bin auf der Suche nach einem loop verbinden (plot) jedes paar von einem Punkt pro Schleife.
Beispiel:
data1=data;
figure
scatter(X,Y,'.')
hold on
for i=1:size(data,1)
[Liaa,Locbb] = ismember(data(i,:),data1,'rows');
data1(Locbb,:)=[];
[n,d] = knnsearch(data1,data(i,:),'k',1);
x=[data(i,1) data1(n,1)];
y=[data(i,2) data1(n,2)];
plot(x,y);
end
hold off
Obwohl die vorgeschlagene Schleife sieht gut aus, ich will eine Art von Handlung, die jedem Punkt eine Verbindung zu maximal 2 weitere Punkte (als ich sagte, wie plot(x,y)
)
Jede Hilfe wäre sehr geschätzt werden!
InformationsquelleAutor Iman | 2014-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielen Dank für Ihre Hilfe, endlich eine Lösung gefunden wird:
BTW es ist möglich, löschen Sie die Letzte, längste Linie ist, da es nicht im Zusammenhang mit der Frage, ob jemand es brauchen lassen Sie es mich bitte wissen.
InformationsquelleAutor Iman
Brauchen Sie nicht, um eine Schleife auf alle. Sie können
interp1
. Geben Sie Ihrex
undy
Daten Punkte als Kontrollpunkte. Nach, können Sie eine feinere Reihe von Punkten aus der erstenx
Wert der letztenx
Wert. Sie können angeben, einelinear
spline als das ist, was Sie erreichen möchten, wenn das Verhalten Sie wollen, ist das gleiche wieplot
. Unter der Annahme, dassdata
ist eine 2D-matrix, wie Sie oben gezeigt, ohne weitere Umschweife:Warnung: Sie haben zwei
x
Werte, die anzeigen zu630.5477
aber produzieren verschiedeney
Werte. Wenn Sieinterp1
, dies wird Ihnen ein Fehler, die ist, warum hatte ich an etwas stören einer der Werte, die durch eine kleine Menge, um diese zu arbeiten. Dies sollte hoffentlich nicht der Fall sein, wenn Sie beginnen, mit Ihren eigenen Daten. Das ist der plot, den ich bekommen:Du wirst sehen, dass es eine große Lücke zwischen diesen beiden Punkten, die ich darüber gesprochen. Dies ist die einzige Einschränkung, die zu
interp1
wie es wird davon ausgegangen, dass diex
Werte sind streng monoton Steigend. Als solche, Sie können nicht die gleichen beiden Punkte in Ihrem Satzx
Werte.Verwenden Sie ein line-tracing-Algorithmus: github.com/sachinruk/xiaolinwu/blob/master/xiaolinwu.m
Vielen Dank @rayryeng. Ehrlich gesagt, ich habe nicht bekommen, was es ist die Linie-tracing-Algorithmus als seine Handlung, die nur einige Punkte.
Das line-tracing Algorithmus ist im wesentlichen, was
interp1
ist dabei zwischen Paaren von Punkten, aber mehr robust. Wenn Sie möchten, schließen Sie eine Luftlinie zwischen zwei Punkten, können Sie das nur tun, diskret... im Grunde enthält es mehrere Punkte dazwischen. Ich weiß nicht, was mehr wollen Sie von Ihrem problem. Das wird mein letzter Kommentar, da ich denke, dass ich das problem gelöst haben. Viel Glück.würden Sie bitte einen Blick auf? vielen Dank,
InformationsquelleAutor rayryeng