2013-07-29 21 views
5

Ich mache Projekt in der Fernerkundung. Die Arbeit mit HDF auf Matlab ist sehr einfach. Aber ich möchte dies mit Grid-Computing (Ubuntu) implementieren. Also ich versuche es mit Oktave. Ich habe HDF4-Dateien von Chlorophyll. Normale Bildbearbeitung wird leicht in Oktaven durchgeführt. Aber ich möchte über hdfread, hdftool in Octave wissen. Ich habe ein Bildpaket im Oktavbild hinzugefügt. Kann jemand mir sagen, wie man liest und wie man mit hdf Daten arbeitet. Gibt es ein Paket hinzuzufügen? Bitte lass es mich wissen.Wie hdf Daten in Octave lesen

  • Wie hdf Daten
  • Wie lesen hdf Daten
  • Wie laden zum Abrufen Bild von hdf Daten
+0

'hdfread' und' hdftool' sind noch nicht in Octave implementiert (ich betrachte Version 3.6.4) ... –

Antwort

2

Für HDF5 kann Octave es ohne zusätzliches Paket laden.

Für HDF4 können Sie es in eine NetCDF-Datei konvertieren, indem Sie h4tonccf oder OPeNDDAP hdf4_handler verwenden, und dann über den NetCDF-Aufruf über das octcdf-Paket der Octave laden. Wir bieten ein komplettes Beispiel mit voller Octave Quelltexte hier:

http://hdfeos.org/software/octave.php

Die unten eine Probe NASA HDF4 Plot von Octave über OPeNDAP erstellt ist.

Octave's plot of NASA AIRS HDF4 product

+0

Vielen Dank für Ihre Antwort. – prabu

1

Die hdf spezifischen Funktionen noch nicht in Octave umgesetzt. Octave kann dieses Format jedoch mit dem Standardbefehl load verarbeiten. Tun Sie einfach load path-to-hdf-file und Sie werden eine Struktur im Speicher laden.

Diese Beiträge finden Sie im Hilfe-Archiv: How to read HDF data und read data subsets from HDF5.

+0

Vielen Dank für Ihre Antwort. Ich habe das schon gemacht. aber es kommt mit einem Fehler. Wenn Octave hdf4 und seine Operationen unterstützt, wird es für mich sehr hilfreich sein, anstatt Matlab zu verwenden. – prabu

+0

@prabu Sie müssen den Fehler angeben, den Sie erhalten (und Octave-Version), wenn Sie möchten, dass Ihnen die Leute helfen. – carandraug

0

Ich glaube, Sie hdf4 Daten umwandeln kann mit appropriate conversion tools hdf5, z.B. h4toh5.

In Octave, eine .h5-Datei zu laden (plus Prüfung) ist so einfach wie:

octave:1> load secondhdf5.h5 
octave:2> whos 
Variables in the current scope: 

    Attr Name   Size      Bytes Class 
    ==== ====   ====      ===== ===== 
     dbldata  4x3       96 double 
     fltdata  4x3       96 double 
     intdata  4x3       48 int32 

Total is 36 elements using 240 bytes 

octave:3> size(dbldata) 
ans = 

    4 3 

By the way, der Inhalt von 'secondhdf5.h5' waren wie folgt:

$ h5dump secondhdf5.h5 
HDF5 "secondhdf5.h5" { 
GROUP "/" { 
    DATASET "dbldata" { 
     DATATYPE H5T_IEEE_F64LE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1.1, 1.2, 1.3, 1.4, 
     (1,0): 2.1, 2.2, 2.3, 2.4, 
     (2,0): 3.1, 3.2, 3.3, 3.4 
     } 
    } 
    DATASET "fltdata" { 
     DATATYPE H5T_IEEE_F32LE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1.1, 1.2, 1.3, 1.4, 
     (1,0): 2.1, 2.2, 2.3, 2.4, 
     (2,0): 3.1, 3.2, 3.3, 3.4 
     } 
    } 
    DATASET "intdata" { 
     DATATYPE H5T_STD_I32BE 
     DATASPACE SIMPLE { (3, 4)/(3, 4) } 
     DATA { 
     (0,0): 1, 2, 3, 4, 
     (1,0): 5, 6, 7, 8, 
     (2,0): 9, 10, 11, 12 
     } 
    } 
} 
} 
1

Die HDF5-Unterstützung in Octave < = 4.0 ist nur für Dateien gedacht, die von Octave selbst über Simple File IO-Funktionen geschrieben wurden. Es hat viele Nachteile, wenn Ihre Daten von einem anderen Ort stammen, so dass es nicht möglich ist, einen einzelnen beliebigen Datensatz oder einen Teil davon zu lesen.

Im Moment für vollständigere und Matlab-kompatible Funktionen, die Datensammlungen und Attribute lesen/schreiben, finden Sie in der Modul

https://github.com/stegro/hdf5oct

Edit: Ich zu diesem Projekt beigetragen.

+0

Bitte geben Sie Ihre Zugehörigkeit zu dem Projekt an, ansonsten könnte Ihr Beitrag als Werbung oder Spam angesehen werden, die möglicherweise falsch sind. – skuntsel