|
|
Interpolation eines digitalen Höhgenmodels in MATLAB |
|
Redhead |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 14.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.04.2008, 10:54
Titel: Interpolation eines digitalen Höhgenmodels in MATLAB
|
|
Hallo liebe Mitglieder von gomatlab
Das Ziel wäre ein DEM (Digital Elevation Model) zu konstruieren. Die Basis ist ein File mit Koordinaten in 3D ASCII; in 3 kolonnen x, y, und z unterteilt. Es handelt sich um die geographischen koordinaten sowie um die Höhe Z.
Wie kann ich denn nun das file xyz in Matlab öffnen, um ein image file zu konstruieren, welches "lôcher " enthält, mit diskreten Werten die dem file entsprechen aber ohne dass die pixel bereits einen wert haben?
Vielen Dank für eine Antwort.
Herzliche Grüsse von REDHEAD
c'est comment on peut ouvrir un fichier xyz sous matlab et en faire une image avec des "trous", en gros avec des valeurs discrètes qui correspondent au fichier mais tous les pixels n'auront pas une valeur.
|
|
|
|
|
jochma |
Forum-Fortgeschrittener
|
|
Beiträge: 79
|
|
|
|
Anmeldedatum: 25.10.07
|
|
|
|
Wohnort: Oberbayern
|
|
|
|
Version: Version 7.0.0 (R14)
|
|
|
|
|
|
Verfasst am: 14.04.2008, 12:05
Titel:
|
|
Servus,
also einlesen kannst du die *.xyz-Datei mit textread: z.B.:
In der Variable dem befinden sich dann gemäß der Eingangsvariable in Spalte 1 die x-, in Spalte 2 die y-Koordinaten und in Spalte 3 die zugehörige Höhe.
Für ein digitales Höhenmodell bietet sich ferner an, ein regelmäßiges Koordinatengitter aufzubauen, am besten über die Funktion meshgrid:
ausgehend von den Minimal- und Maximalwerte der x- und y-Koordinate baut meshgrid eine 2 Matrizen auf, die jeweils an den einzelnen Positionen die zugehörige x- und y-Koordinate angibt.
Eine 3. Matrix zmesh könnte dann jeweils die zugehörigen Höhenwerte beinhalten.
Für die Interpolation der Höhen zu den entsprechenden Koordinaten kann man die Funktion interp2 benutzen, und eventuell nichtbesetzte Stellen mit NaN auffüllen.
gruß
jochma [/b]
|
|
|
Redhead |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 14.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.04.2008, 20:10
Titel:
|
|
Danke Jochma für deine informative und bespielsreiche Antwort! Ich hab selbst Mal angefangen rumzubasteln mit dem Befehl textscan, diesen habe ich in Matlab Help gefunden. Habe aber den Befehl vermutlich nicht richtig implementiert. Zuhause habe ich leider kein Matlab, darum konnte ich Deine Empfehlung noch nicht umsetzen. An alle (und besonders auch an Jochma): Was haltet Ihr den von der Textscan Variante? Nachfolgend mein Beispiel:
fid = fopen('mnt_sierraGuara_2007.txt', 'r');
xyz = textscan(fid, '%u8 %u8 %u8', 3, 'headerlines', 1, 'delimiter', ', ','CollectOutput', 1);
fclose(fid)
Danke für Eure Mithilfe und herzliche Grüsse,
REDHEAD
|
|
|
jochma |
Forum-Fortgeschrittener
|
|
Beiträge: 79
|
|
|
|
Anmeldedatum: 25.10.07
|
|
|
|
Wohnort: Oberbayern
|
|
|
|
Version: Version 7.0.0 (R14)
|
|
|
|
|
|
Verfasst am: 15.04.2008, 16:30
Titel:
|
|
also mit textscan hab' ich noch nicht gearbeitet, aber für größere und komplexere Datenmengen scheint es (laut Matlab-Hilfe) besser geeignet zu sein als textread.
Besonders wenn zusätzliche erklärende Zeilen in der Datei vorhanden sind (z.B. auszunehmende headerlines), oder die Daten mit einem ',' voneinander getrennt sind (delimiter).
Für die Daten selbst ist wohl das Format double ('%n') besser geeignet als integer8 ('%u8'), und ich denke, dass der Begrenzer N (bei deinem Beispiel '3') nicht benötigt wird.
Ebenso muss man sich vom Handling drauf einstellen, dass textscan die Daten in eine cell-Variable schreibt und nicht wie textread in eine einzelne Matrix.
'CollectOutput' ist mir und Matlab7.0 neu!? Gibt's wohl erst ab Matlab8.0?
gruß
jochma
|
|
|
Redhead |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 14.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2008, 20:02
Titel:
|
|
Hallo Jochma
CollectOutput lässt nach Matlab Hilfe ein Zusammenfassen der eingelesenen Daten in eine Matrix zu (wenn ich das in der English Hilfe richtig verstanden habe). Ich kann mir vorstellen, dass dieser Befehl hinzugefügt wurde, um dem von Dir geschilderten Problem mit der cell-Variable entgegenzuwirken.
Danke für deinen Datenformat-Tipp. Ich muss mir unbedingt Matlab zuhause zulegen. Gibts denn Studentenlizenzen oder trial Versionen mit vernünftigen Ablaufzeiten? Gebe Dir ein Feedback zu deinem Vorschlag sobald ich an der Uni zum programmieren komme.
Nochmals vielen Dank und griessdi!
Redhead
|
|
|
jochma |
Forum-Fortgeschrittener
|
|
Beiträge: 79
|
|
|
|
Anmeldedatum: 25.10.07
|
|
|
|
Wohnort: Oberbayern
|
|
|
|
Version: Version 7.0.0 (R14)
|
|
|
|
|
|
Verfasst am: 17.04.2008, 10:15
Titel:
|
|
bei uns in der Uni ist Matlab in den CIP-Pools der Fakultät und an einigen Lehrstühlen vorhanden, einige Unis bieten auch Studentenlizenzen für Matlab an.
Ob's auch eine trial-Version gibt?
Da bin ich überfragt...
derweil frohes und erfolgreiches Schaffen!
gruß
jochma
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 17.04.2008, 21:16
Titel:
|
|
Eventuell tuts auch octave. Habe damit schon länger nicht mehr gearbeitet, aber zur erstellung von skripten sollte es tun. Graphische Ausgabe oder GUIs wird aber schwierig, da octave für graphische dinge gnuplot verwendet..
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
Redhead |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 14.04.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.05.2008, 21:54
Titel:
|
|
|
|
|
Hallo liebe Mitdiskutierende
Die Problemstellung, welche ich vor einiger Zeit zur Diskussion gestellt habe, ist nun fast gelöst. Es fehlen mir aber noch einige Verbindungsstücke und ich bringe mein Programm nicht zum laufen. Ich habe den Verdacht, dass mit der Variablentransformierung nach double ein Fehler vorliegen kann. Könnt ihr mir evtl. weiterhelfen?
Des weiteren möchte ich eine Funktion zur Interpolationsmethode inverse Distanz in meine Interpolationsfuntion (pv) integrieren, finde aber nicht die richtige Initiation, damit am Ende das Verknüpfen von drei Funktionen aufgeht. Bitte nicht erschrecken, die Kommentare sind in Französisch, da das Projekt in dieser Sprache zu erfüllen ist.
Einen Arbeitsschritt habe ich noch nicht erfüllt, nämlich das Verknüpfn des finalen DHM`s (nach der Wahl der Auflösung und der Interpolation) mit den Koordinaten.
Ein zugehöriges Text-File mit Höhenangaben und Koordinaten kann unter dem folgenden Link heruntergeladen werden:
http://rapidshare.com/files/1135323....._aragon_2007_utm.asc.html
Vielen Dank für Eure Zahlreichen Rückmeldungen, ich freue mich auf euer kritisches Feedback.
Beschreibung: |
Dies ist die Funktion, welche ich gerne in meiner Interpolationsfunktion aufrufen möchte, aber nicht weiss, wie die notwendigen Parameter in der ursprünglichen Interpolationsfunktion pv aufzurufen sind. |
|
Download |
Dateiname: |
invdistgrid.m |
Dateigröße: |
2.33 KB |
Heruntergeladen: |
708 mal |
Beschreibung: |
Dies ist die Interplationsfunktion |
|
Download |
Dateiname: |
pv.m |
Dateigröße: |
633 Bytes |
Heruntergeladen: |
763 mal |
Beschreibung: |
Dies ist die DHM-Funktion |
|
Download |
Dateiname: |
test_corrige.m |
Dateigröße: |
2.83 KB |
Heruntergeladen: |
685 mal |
|
|
|
|
|
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.
|
|