Import von MATLAB-Dateien

Einleitung

Die Erweiterung konvertiert Daten aus dem MATLAB-Format (.mat) in das UniPlot-Dateiformat (NC2) bzw. nc-Dateien in MATLAB-Dateien. MATLAB braucht dazu dazu nicht installiert sein.

MATLAB ist eine eingetragene Marke von The MathWorks, Inc. (http://www.mathworks.de).

MATLAB-Dateien im ControlDesk-Format können geladen werden. ControlDesk ist eine eingetragene Marke der dSpace GmbH (http://www.dspace.de).

Quelltext

Die Funktionen zur MATLAB-UniPlot-Datendatei-Konvertierung befinden sich in der Datei matlab.ic im UniPlot/script-Verzeichnis. Sie verwenden die Funktionen matlab_load und matlab_save.

Import von MATLAB-Dateien

  • Starten Sie UniPlot.
  • Wählen Sie Datei=>Daten importieren.
  • Wählen Sie den Typ MATLAB-Datei (*.mat) aus.
  • Wählen Sie eine oder mehrere MATLAB-Dateien aus.

Optionen

Über das Dialogfeld Extras=>Weitere Optionen kann festgelegt werden, ob der Matlab-Strukturname vor den Kanalnamen gestellt wird. Wenn die Option ausgewählt wird, wird der Strukturname getrennt durch einen Punkt vor den Elementnamen gestellt. Beispiel: St1.speed. Defaultwert ist „mit Strukturname“.

Bis UniPlot 2015.4 wurde der Kanalname aus dem Elementnamen ohne den Strukturnamen gebildet. Nur wenn der Name in verschiedenen Strukturen auftritt, wird der Namen um den Namen der Struktur erweitert. Ansonsten würde der Kanal nur einmal in der NC-Datei auftreten, da in der NC-Datei jeder Kanal einen eindeutigen Namen haben muss.

Elemente

Die folgenden Elemente der MATLAB-Datei werden geladen:

Vektoren

Ein Matlab-Vektor wird in der NC-Datei als Kanal gespeichert. Der Elementname wird als Kanalname verwendet. Das Element muss mindestens 2 Zahlenwerte enthalten.

Matrizen

Die Spalten einer Matlab-Matrix werden in der NC-Datei als Kanäle gespeichert. Damit eine Zahlenmatrix importiert werden kann, müssen die folgenden Voraussetzungen erfüllt sein:

  • Die Matrix muss mindestens 2 Spalten und 2 Zeilen enthalten.
  • In der gleichen Ebene, in der sich die Zahlenmatrix befindet, muss die MATLAB-Datei ein Stringmatrix mit der gleichen Spaltenanzahl enthalten.
  • Die erste Zeile der Stringmatrix darf keine leeren Elemente enthalten.

Als Kanalnamen werden die Texte der ersten Zeile verwendet. Falls die Stringmatrix noch weitere Zeilen enthält, wird die zweite Zeile als Einheit eingelesen. Alle weiteren Zeilen werden ignoriert.

Beispiel für eine gültige Struktur für eine Matrix mit 3 Spalten und 2 Zeilen:

* o = [. Daten = rand(2,3), Header = ["C1", "C2", "C3"]]
* o
[.
    Daten = matrix 2 x 3 [0.566211, 0.82072, 0.325495, 0.34008, 0.895177, ...]
    Header = string-matrix 1 x 3 ["C1", ...]
]
object (obj at 0x386C4BC)

Weitere Strukturelemente

Die folgenden Elemente müssen nicht vorhanden sein. Falls Sie vorhanden sind, werden die Informationen wie folgt in der NC-Datei gespeichert.

channel_info: Ist ein Array von Strukturen. Jede Struktur enthält für einen Kanalnamen Attribute. Vordefinierte Elemente: C_format, add_offset, datatype long_name, scale_factor, title, units.

globals: Enthält skalare Elemente, die in der NC-Datei als globale Attribute gespeichert werden.

order: Ist ein Stringarray mit den Kanalnamen, das die Reihenfolge in der NC-Datei festlegt.

Falls die Matlab-Datei mehrere Zeitgruppen enthält, können die Zeitkanäle mit dem Attribut Type markiert werden. Der Wert ist dann der Text Time Channel. In diesem Fall muss zusätzlich das globale Attribut nc_has_indep_channel mit dem Wert 1 (Datentyp NC_LONG) gespeichert werden. Wenn die Datei so vorbereitet ist, kann man die Kurven im Browser als 2D: y/t „MDF/INCA/CAN…“ laden. Es muss dann kein Zeitkanal ausgewählt werden. In diesem Fall wählt UniPlot dann automatisch den korrekten Zeitkanal aus.

Beispiel:

* matlab_load(GetRootDirectory() + "samples/map-data.mat")
[.
    BEEWG = matrix 1 x 78 [1002.5, 461.7, 350.3, 322, 302.6, ...]
    CO = matrix 1 x 78 [0.6, 0.08, 0, 0.05, 0.05, ...]
    order = string-matrix 11 x 1 ["BEEWG", "CO", ...]
    channel_info = [.
        BEEWG = [.
            C_format = "%.2lf"
            add_offset = 0
            datatype = "real4"
            long_name = "BEEWG/g/kWh"
            scale_factor = 1
            title = "BEEWG"
            units = "g/kWh"
        ]
        CO = [.
            C_format = "%.2lf"
            add_offset = 0
            datatype = "real4"
            long_name = "CO/%"
            scale_factor = 1
            title = "CO"
            units = "%"
        ]
    ]
    globals = [.
        Creator = "UniPlot Excel Converter v2"
        Origin = "D:\uniplot_du\samples\map-data.xls [map]"
        Source = "FEV Software and Testing Solutions GmbH (www.uniplot.de)"
        missing_value = 1e+10
    ]
]

Export von UniPlot-Datendateien nach MATLAB

Eine netCDF-Datei kann als Matlab-Datei gespeichert werden. Siehe Datei=>Daten exportieren.

History

  • R2018.7, 19.04.2019: channel_info wurde bei HDF5 (matlab 7.3) nicht korrekt verarbeitet.
  • R2015.9, 08.04.2016: Laden von HDF5-basierten MATLAB-Dateien.
  • R2015.6, 20.11.2015: Neue Option „Strukturnamen für Kanalnamen verwenden“.
  • UniPlot 5.14.5, 26.03.2010: _channel_info zu channel_info, _globals zu globals und _ zu order umbenannt.
  • UniPlot 5.11.1, 01.09.2009: ControlDesk-Format zugefügt.
  • UniPlot 5.10.2, 03.06.2009: Es können MAT-4-Dateien importiert werden.
  • UniPlot 5.10.1, 27.05.2009: Matrizen als Kanäle speichern zugefügt.
  • UniPlot 5.10.0, 30.04.2009: MATLAB Import-Filter zugefügt.

id-1736791