|
|
Unsortierte Werte einer Matrix sortiert einer 2. zuordnen |
|
Claudio |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.11.2016, 14:13
Titel: Unsortierte Werte einer Matrix sortiert einer 2. zuordnen
|
|
|
|
|
Hallo zusammen,
Ich bin gerade an einer Datenanalyse und komme einfach nicht mehr weiter.
Ausgangssituation: Ich habe für ein Gebiet Niederschlagsdaten (mm/d) zur Verfügung. Diese Daten haben eine Auflösung von ca. 1.6x2.1km. Mein Gebiet wird von 181 Zellen mit Niederschlagsdaten abgedeckt.
Nun möchte ich sagen können, welche Bodenart in der jeweiligen Zelle mit Niederschlag dominant ist (z.B. Schnee, Wald, Siedlungsgebiet, etc.). Diese Info nutze ich, um einen Wasserspeicher einzubauen (Interzeption, Regenrückhalt auf Vegetation). Ich habe eine Bodenkarte für mein Gebiet zur Verfügung. Jede Zelle hat einen Wert zw. 1 und 15 (für Schnee, Wald, Wiese, etc.), die Legende dazu habe ich. "Leider" hat meine Bodenkarte eine Auflösung von 100x100m (und nicht diesselbe wie meine Niederschlagsdaten).
Ich habe nun eine Matrix "map" generiert, die mir für jede 100x100m Zelle der Bodenkarte sagt, zu welcher der 181 Niederschlagszellen sie gehört.
Ziel: Ich erstelle eine Matrix A, die alle Werte der Bodenkarte pro Niederschlagszelle in eine Spalte aufweist (ergo 181) Spalten. Diese Matrix A nutze ich dann, um jede Spalte durchzuzählen und die dominante Bodenbedeckung zu ermitteln.
Ich hoffe ich habe das Problem klar formuliert. Die "map" und die "bodenkarte" habe ich angehängt.
- NaN oder -9999 bezeichnen Zellen, die ausserhalb meines Gebietes liegen.
- Da einige Niederschlagszellen am Rand meines Gebietes sind, haben nicht alle Zellen gleich viele Zellen aus der Bodenkarte. Die Matrix A muss ich dann jeweils mit 0 auffüllen.
Herzlichen Dank für eure Hilfe! Ich habs nicht geschafft, diese unterschiedlichen Zuordnungen zu codieren.
Grüsse Claudio
Beschreibung: |
|
Download |
Dateiname: |
map.mat |
Dateigröße: |
11.95 KB |
Heruntergeladen: |
437 mal |
Beschreibung: |
|
Download |
Dateiname: |
landcover.mat |
Dateigröße: |
2.5 KB |
Heruntergeladen: |
440 mal |
|
|
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.11.2016, 15:05
Titel:
|
|
Hier die original Bodenkarte mit den Einträgen zw. 1 bis 15. (die mit der Frage angehängte Bodenkarte war bereits überschrieben wie ich gerade gemerkt habe).
Beschreibung: |
|
Download |
Dateiname: |
landcover.mat |
Dateigröße: |
18.62 KB |
Heruntergeladen: |
414 mal |
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 18.11.2016, 18:52
Titel:
|
|
Hallo.
Zitat: |
Ausgangssituation: Ich habe für ein Gebiet Niederschlagsdaten (mm/d) zur Verfügung. Diese Daten haben eine Auflösung von ca. 1.6x2.1km. Mein Gebiet wird von 181 Zellen mit Niederschlagsdaten abgedeckt.
Nun möchte ich sagen können, welche Bodenart in der jeweiligen Zelle mit Niederschlag dominant ist... |
Ab hier kann ich nicht mehr folgen. Für Matlab sind das doch alles Zahlen. Deshalb helfen die Beschreibungen der physikalischen Bedeutung nicht, das Programmier-Problem zu verstehen.
Kannst Du einen kleinen Beispiel-Datensatz als Text posten und daran zeigen, was Du als Ergebnis suchst? Dazu brauchen wir nur den Typ und den Inhalt des Inputs, aber keinerlei Bedeutungen.
Gruß, Jan
|
|
|
Claudio |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.11.2016, 23:21
Titel:
|
|
Alles klar.
Beispielsmatrix
"map"
1 1 2 2
1 1 2 2
1 1 3 3
4 4 3 3
"landcover"
6 6 7 8
3 4 3 5
1 2 5 9
4 5 5 4
Zielmatrix
(die 1 aus "map" ist die 1. Spalte gefüllt mit den zugehörigen Werten aus der "landcover" matrix)
6 7 5 5
6 8 9 4
3 3 5 0
4 5 4 0
1 0 0 0
2 0 0 0
Die aufgefüllten Werte müssen nicht sortiert sein.
Danke für die Hilfe! Ich hoffe, jetzt ist es verständlicher
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 19.11.2016, 14:29
Titel:
|
|
Hallo Claudio,
Und wie lautet die Vorschrift, mit der man von den beiden Inputs zum gewünschten Output kommt?
Gruß, Jan
|
|
|
Claudio |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.11.2016, 15:52
Titel:
|
|
Hallo Jan,
Ich habe versucht, mit for schlefen jede zelle mit einer if bedingung anzufragen ob der wert der "map" eine zahl zw 1 bis 181 ist und dann derselbe wert der "landcover" in eine neue matrix in die entsprechende spalte zu schreiben. Aber es hat nicht geklappt, dass die neue matrix fortlaufend aufgefüllt wird.
Diese "vorschrift" suche ich ja.
Gruss Claudio
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 19.11.2016, 23:15
Titel:
|
|
Hallo Claudio,
Dann drücke ich es mal anders aus: Ich sehe den Zusammenhang zwischen "map", "landcover" und der Zielmatrix nicht.
Zitat: |
ob der wert der "map" eine zahl zw 1 bis 181 ist und dann derselbe wert der "landcover" in eine neue matrix in die entsprechende spalte zu schreiben. |
Das kommt der Lösung schon näher. Die Zaheln aus Map werden gesucht und falls sie zwischen 1 und 181 liegen, wird welcher selbe Wert aus landcover genommen? Meinst Du das Element an der gleichen Position? Was ist dann "die entsprechende Spalte"?
Du hattest auch geschrieben:
Zitat: |
Diese Matrix A nutze ich dann, um jede Spalte durchzuzählen und die dominante Bodenbedeckung zu ermitteln. |
Das ist bestimmt wichtig und Dir auch klar, aber wenn man gar keine Ahnung hat, was das Ziel ist, kommt man nicht dahinter, was es bedeutet.
Gruß, Jan
|
|
|
Claudio |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.11.2016, 23:40
Titel:
|
|
Sali Jan,
Danke für deine Bemühungen. Ich versuchs, den Zusammenhang noch klarer zu erklären.
Ich gehe in die map Matrix und nehme den Wert an der Stelle (1/1), das wäre im Beispiel der Wert 1. Dann gehe ich in die landcover Matrix und nehme an derselben Stelle den Wert, hier also 6. Dann schreibe ich den Wert aus der landcover Matrix (6) in die Spalte der Zielmatrix, die dem Wert aus der map Matrix entspricht (hier also 1, ergo in die erste Spalte).
Da in der map Matrix mehrere Male die 1 vorkommt (hier 4x), gibt es in der Zielmatrix in der ersten Spalte 4 Zeilen mit einem Wert aus der landcover Matrix (bei den anderen Spalten eine unterschiedliche Anzahl von Werten aus der Landcover Matrix).
Ich hoffe, so ist es besser verständlich.
Vielen Dank für die Hilfe.
Claudio
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 20.11.2016, 21:21
Titel:
|
|
Hallo Claudio,
Vorschlag:
Gruß, Jan
|
|
|
Claudio |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.11.2016, 09:25
Titel:
|
|
Hoi Jan,
Vielen Dank für dein Vorschlag! Das funktioniert tip top
Ich habe es noch auf einem anderen Wege versucht:
Was würde für deinen Vorschlag statt meiner Idee sprechen?
Grüsse Claudio
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 21.11.2016, 10:46
Titel:
|
|
Hallo Claudio,
size(map, 1)
ist effizienter statt einen Vektor zu erzeugen, seine Länge zu bestimmen und ihn dann gleich wieder zu löschen.
Die Länge der ersten Dimension hängt von der Anzahl der Werte in map ab, nicht von der Größe der Matrix selbst.
Zitat: |
Was würde für deinen Vorschlag statt meiner Idee sprechen? |
Ich denke, mein Vorschlag läuft schneller. Wenn die Input-Arrays klein sind, fällt das nicht ins Gewicht.
Gruß, Jan
|
|
|
Claudio |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.11.2016, 11:54
Titel:
|
|
Sali Jan,
Alles klar, merci für deine Erklärung und Hilfe!
Grüsse Claudio
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|