Plot-Linien zwischen Punkten in einer matrix in MATLAB
Ich habe eine matrix mit n Zeilen und 4 Spalten. Die Spalten sind x0, y0 und x1, y1 (also im Grunde habe ich n paar von Punkt-Koordinaten in 2D). Ich will zeichnen Sie eine Linie zwischen den entsprechenden Punkt-Paare (das heißt, nur zwischen x0, y0 und x1, y1 einer Zeile).
Ist es möglich, dies zu tun, ohne eine Schleife? Denn Folgendes funktioniert, ist aber sehr langsam.
for i = 1:size(A.data, 1)
plot([A.data(i, 1), A.data(i, 3)], [A.data(i, 2), A.data(i, 4)], 'k-')
end
InformationsquelleAutor darda | 2013-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kam hierher auf der Suche nach der gleichen Antwort. Ich habe im Grunde wollen Sie eine horizontale Linie für jede x,y-Punkt, ab diesem Punkt die x- /y-Wert und endend bei den x-Wert der nächsten xy-paar, ohne eine Zeile der Verbindung, dass segment auf die nächste xy-paar. Ich kann die Segmente durch hinzufügen neuer Punkte, die zwischen, mit den alten y und den neuen x, aber ich wusste nicht, wie Sie brechen die Linien-Segmenten. Aber deine Formulierung (matrix) brachte mich auf die Idee. Was wenn Sie laden Sie Ihre xy-Paare, ein paar von x -, y-Vektoren und - warten Sie - trennen Sie die Paare mit den nan ' s in x-und y-Vektoren. Ich habe versucht, dass mit einer sehr langen Sinus-Welle, und es scheint zu funktionieren. Eine Tonne von disjunkten Liniensegmenten, dass plot und zoom sofort. 🙂 Sehen Sie, wenn es Ihr problem löst.
InformationsquelleAutor PaulQ
Diese arbeiten für die Daten-Struktur, die ich habe:
Diesem Beispiel zeichnet ein Quadrat.
Der Schlüssel ist, dass MATLAB zeichnet Linien spaltenweise in der Argumentation. Das heißt, wenn die Argumente der
plot
haben n Spalten, die Linie muss n-1 Segmente.In einem "connect-the-dots" - Szenario, in dem alle Punkte in die Vektoren angeschlossen werden müssen, ist dies irrelevant, da MATLAB umgesetzt sein wird, um ein Spalten-Vektor, wenn es nötig ist. Es wird wichtig, in meiner Bewerbung, da ich nicht möchten, verbinden Sie jeden Punkt auf der Liste - nur paar Punkte.
InformationsquelleAutor darda
Versuchen
line
zum BeispielNaja, es ist nur zu zeigen, dass die Nutzung. Linie vektorisiert und plots-Linien in 2D ohne eine for-Schleife, die ist, was ich dachte, Sie waren für Fragen. Erstellen Sie einfach 2-Matrizen aus den Spalten Ihrer Daten. X aus der 1. und 3., Y aus der 2. und 4. Rang. Umsetzung und Eingang auf line. verwenden Sie die plot-handle, wenn Sie wollen, zu manipulieren, wie er angezeigt.
OK, dann Bearbeiten Sie Ihre Antwort; denn die Nutzung kann leicht überprüft werden, die mit den docs. Meine Frage war, "wie Sie zum zeichnen von Linien zwischen den entsprechenden Paaren ohne Schleife", nicht "wie eine Linie zu ziehen". FYI "Linie" kann ersetzt werden durch "Handlung" in Ihrer Lösung, das ist schön. Aber beide Versionen ziemlich langsam und das Ergebnis in Parzellen, die langsam reagieren (zoom, etc.). (Ich bin den Umgang mit 1500 Paaren von Punkten; ich hätte erwartet, besser.)
InformationsquelleAutor bogle