WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

komplizierter plot

 

n.force
Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 10.06.2015, 07:24     Titel: komplizierter plot
  Antworten mit Zitat      
Hallo liebe community,

Ich habe Daten in zwei Variablen vorliegen, wie im Anhang zu sehen.

Jede Zeile in der Matrix "ways" entspricht einem Weg und beinhaltet die ID eines GPS Punktes, welcher wiederum in der Matrix "coor" mit den entsprechenden Lon, Lat zu finden ist.

Ich möchte jetzt in einem plot jeden Weg einzeichnen.

Ich habe leider keine Ahnung, wie ich das geschickt anstelle und wollte euch fragen, ob ihr mir dabei behilflich sein könntet?

ways.JPG
 Beschreibung:

Download
 Dateiname:  ways.JPG
 Dateigröße:  335.48 KB
 Heruntergeladen:  301 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.06.2015, 08:58     Titel:
  Antworten mit Zitat      
Hallo,

du kannst ismember mit zwei Rückgabeargumenten aufrufen um herauszufinden, wo die Elemente von ways in der dritten Spalte coor enthalten sind.

Das zweite Rückgabeargument kannst du dann als Zeilenindex für die anderen beiden Spalten von coor verwenden.

Wenn du für weitere Unterstützung Testdaten als .mat zur Verfügung stellen kannst, wäre das hilfreich. Die Daten abzutippen wäre doch etwas mühsam.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 10.06.2015, 09:10     Titel:
  Antworten mit Zitat      
Hallo Harald,

das wäre dann der gleiche Ansatz wie die Verwendung von find() oder?

Das Problem dabei ist, dass die Ausgegeben Indize sortiert werden.
Die Punkte liegen somit in der falschen Reihenfolge vor.

Ich habe jetzt eine verschachtelte for-Schleife gebaut, die jede ID der Reihe nach durchsuchst und die zugehörigen lon,lat Werte in einer separaten Matrix speichert.

Das funktioniert zwar, ist aber sicher nicht die effizienteste Lösung.

Ein Zipfile mit der *.mat ist angehängt.
(mat dateien sind im Matlab Forum nicht erlaubt????)

data.zip
 Beschreibung:

Download
 Dateiname:  data.zip
 Dateigröße:  256.38 KB
 Heruntergeladen:  285 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.06.2015, 09:57     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
das wäre dann der gleiche Ansatz wie die Verwendung von find() oder?

Nein, ist es nicht.

Zitat:
Ich habe jetzt eine verschachtelte for-Schleife gebaut, die jede ID der Reihe nach durchsuchst und die zugehörigen lon,lat Werte in einer separaten Matrix speichert.

Poste das doch bitte :)

Zitat:
(mat dateien sind im Matlab Forum nicht erlaubt????)

Wäre ein Verbesserungsvorschlag für das Forum...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 10.06.2015, 10:08     Titel:
  Antworten mit Zitat      
Sehr gerne:

Code:
lon = NaN(2805,69);
lat = NaN(2805,69);
for k = 1:size(ways,1)
    for h = 1:size(ways,2)
        if ways(k,h) ~= 0;
            indi = find(ways(k,h) == coor(:,3));
            lon(k,h) = coor(indi,1);
            lat(k,h) = coor(indi,2);
        else
            break;
        end
    end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.06.2015, 10:39     Titel:
  Antworten mit Zitat      
Hallo,

und so ginge es mit ismember:

Code:
lon1 = NaN(size(ways));
lat1 = NaN(size(ways));
[found, loc] = ismember(ways, coor(:,3));
lon1(found) = coor(loc(found), 1);
lat1(found) = coor(loc(found), 2);


Mit isequaln kannst du überprüfen, dass auch die gleichen Ergebnisse herauskommen.

Die ismember-Variante ist bei mir ca. 100 Mal schneller.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
n.force
Themenstarter

Forum-Century

Forum-Century


Beiträge: 118
Anmeldedatum: 02.03.12
Wohnort: nähe Magdeburg
Version: ---
     Beitrag Verfasst am: 10.06.2015, 10:53     Titel:
  Antworten mit Zitat      
Suuuuuper,

vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.