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

MATLAB HDF Datei für FFT importieren (von ArtemiS/NI DIAdem

 

NewBeeGuest

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2019, 17:36     Titel: MATLAB HDF Datei für FFT importieren (von ArtemiS/NI DIAdem
  Antworten mit Zitat      
Hallo,

ich möchte mit MATLAB gerne Messdaten einer Schwingungsanalyse auswerten. Diese Daten sind in einer HDF-Datei mit mehreren Channels und Metadaten.
Bis jetzt habe ich die Daten mit ArtemiS SUITE und NI DIAdem geöffnet und bearbeitet. Beide Programme kommen jetzt jedoch an ihre Grenzen.

Bin kompletter Neuling in MATLAB, daher scheitert leider schon der Import der HDF Datei.

Ich habe zunächst den Current Folder von MATLAB auf den Ordner mit der Messdatei umgestellt. In der Dokumentation von MathWorks steht der Befehl "h5disp(filename)" um zunächst die Struktur und die Metadaten sehen zu können. Bei Filename habe ich zunächst den Namen des Files eingegeben.

Command Window: "Undefined variable "filename..." or class "filename...".

Verwendete Version: MATLAB R2016a.

Ich freue mich auch Hilfe bzw. einen Tipp wie ich die HDF Datei öffnen/importieren kann und die Messwerte zunächst einmal auswählen und sehen zu können.

Vielen Dank! Smile


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.06.2019, 18:03     Titel: Re: MATLAB HDF Datei für FFT importieren (von ArtemiS/NI DI
  Antworten mit Zitat      
Hallo NewBeeGuest,

Bitte poste eine Kopie des Codes, anstatt zu erzählen, was der Code tun soll. Poste auch eine Kopie der vollständigen Fehlermeldung, denn dort finden sich die Details, die für eine Lösung benötigt werden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
NewBeeGuest

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2019, 12:52     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für die schnelle Antwort. Mein Code ist bis jetzt sehr übersichtlich:

Code:

% FFT Analyse mit MATLAB
% Current Folder auf Zielordner mit HDF Datei geändert

clear all;
close all;
clc;

% Inhalt der HDF Datei anzeigen
h5disp(Messung_1);

% Messungen aus HDF auslesen
%data = hdf5read(Messung_1,datasetname)
% Funktioniert noch nicht, da der entsprechende datasetname unbekannt ist

 


Als Fehlermeldung kommt im Command Window:
"Undefined variable "Messung_1" or class "Messung_1".

Verwendete Version: MATLAB R2016a.

Vielen Dank! Smile
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.06.2019, 17:53     Titel:
  Antworten mit Zitat      
Hallo NewBeeGuest,

Zunächst rate ich mal wieder vom "brute clear header" ab. clear all löscht alle Funktionen aus dem RAM. Sie von der langsamen Festplatte wieder nachzuladen ist reine Zeitverschwendung. Alle Variablen zu löschen sollte auch überflüssig sein, wenn man ordentlich programmiert. Um den WorkSpace sauber zu halten, verwendet man am besten Funktionen. Das ist viel besser, als per clear all alle aus dem Speicher zu katapultieren.

Das eigentliche Problem wird aber schnell klar und steht auch in der Fehlermeldung:
Code:
h5disp(Messung_1);

Es gibt hier keine Variable, die "Messung_1" heißt. Du möchtest ja auch eigentlich etwas anderes, denn "Messung_1" ist wahrscheinlich der Name des Files, oder? Dann:
Code:
h5disp('Messung_1');

mit Quotes um den Namen. Dann ist 'Messung_1' ein CHAR-Vektor.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
NewBeeGuest
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2019, 08:39     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für den Tipp mit clear all . Bei meinen ersten Versuchen hatten sich beim Ausprobieren immer neue Variablen angelegt, habe den Befehl nun aber entfernt.

Genau, 'Messung_1' ist der Filename.

Benötige ich zum öffnen von HDF-Files noch ein Plugin oder Add-on?
Die Signal Processing Toolbox ist soweit ich weiß installiert.

Mein Code:

Code:
% FFT Analyse mit MATLAB
% Current Folder auf Zielordner mit HDF Datei geändert

close all;
clc;

% Inhalt der HDF Datei anzeigen
h5disp('Messung_1');


% Messungen aus HDF auslesen
%data = hdf5read('Messung_1',datasetname)
% Funktioniert noch nicht, da der entsprechende datasetname unbekannt ist
 


Im Command Window habe ich auch den richtigen "Current Folder":
Code:
cd 'C:\Messdaten'
ls


Zeigt meine Messfiles an.

Code:


Legt auch einen "ans" mit dem richtigen Pfad im Workspace an.

Beim Run erfolgt nun folgende Fehlermeldung:

Zitat:
Error using h5infoc
Unable to open file. Filename may be corrupt or have unsupported characters

Error in h5info (line 74)
hinfo = h5infoc(filename,location);

Error in h5disp>display_hdf5 (line 68 )
hinfo = h5info(options.Filename,options.Location);

Error in h5disp (line 48 )
display_hdf5(options);


Ich habe bereits den Dateinamen geändert (keine Unterstriche mehr) um die "unsupported characters" vielleicht zu eliminieren. Daran liegt es jedoch nicht.

Ich nehem an, das öffnen von HDF-Files bei Schwingungsauswertungen/FFTs ist mit MATLAB ja sicher möglich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.06.2019, 19:00     Titel:
  Antworten mit Zitat      
Hallo NewBeeGuest,

Zitat:
Genau, 'Messung_1' ist der Filename.

Bist du sicher, dass das File keine Extension hat?

Zitat:
Benötige ich zum öffnen von HDF-Files noch ein Plugin oder Add-on?

Das kannst du einfach ausprobieren. Wenn der hdfread Befehl funktioniert, ist alles vorhanden.

"close all" und "clc" sind übrigens auch nicht unbedingt sinnreich. Wozu sollen hier alle GUIs geschlossen werden?

Zitat:
Error using h5infoc
Unable to open file. Filename may be corrupt or have unsupported characters

Die Meldung bedeutet, dass der File-Name nicht passt. Das könnten entweder unsichtbare Unicode-Buchstaben sein, oder du hast wirklich die File-Extension vergessen. Das kannst du testen:
Code:
exist('C:\Messdaten\Messung_1', file)


Zitat:
Ich habe bereits den Dateinamen geändert (keine Unterstriche mehr) um die "unsupported characters" vielleicht zu eliminieren.

Das klingt nach herumraten. Beim Programmieren ist das in Allgemeinen nicht hilfreich. Wenn der File-Name Underscores enthält, müssen die im Befehl natürlich auch angegeben werden.

Wie lautet nun genau der Filename?
Benenne das File testweise um in 'file.hdf'. Klappt das Lesen dann?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
NewBeeGuest
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2019, 08:46     Titel:
  Antworten mit Zitat      
Hallo Jan,

der Filename hat natürlich eine Extention. Diese habe ich im Code auch angegeben. Zur Verdeutlichung hier im Forum jedoch mit "Messung_1" ersetzt, damit jeder weiß was die Messdaten sind.
Zum Testen habe ich die Datei nun mal in "file.hdf" umbenannt.

Der Befehl hdfread funktioniert insofern, dass der Aufbau der Funktion als Info angezeigt wird, wenn ich die Funktion eingebe.

close all habe ich aus meinen Übungen zum Plotten von Funktionen verwendet. Ansonsten entstehen jedes mal neue Fenster bei einem Run. Beim vielen Ausprobieren war der Desktop mit close all immer aufgeräumt. Du hast Recht, bei der jetzigen Anwendung ist es nicht mehr erforderlich.

Wenn ich hdfread ausprobiere mit:
Code:
hdfread('C:\Messdaten\file.hdf');


Erscheint die Fehlermeldung:

Zitat:
Error using hdfread>dataSetInfo (line 338 )
Not enough input arguments.

Error in hdfread (line 209)
[hinfo, params] = dataSetInfo(varargin{:});


Logisch, da ich ja noch nicht das Argument weiß. Dafür ja erstmal h5disp .

Bei deinem Vorschlag mit exist gibt es leider auch eine Fehlermeldung. Code:
Code:
exist('D:\Messdaten\file.hdf', file);


Fehlermeldung:
Zitat:
Undefined function or variable 'file'.


Wenn ich unten im Command Window eingebe:
Code:

Gibt es "ans = 2".

Bei einem nicht vorhandenen Dateinamen "file_xyz.hdf" gibt es "ans = 0".

Wird der Dateityp eventuell nicht unterstützt?
Komisch ist jedoch, dass ich sie sowohl in ArtemiS SUITE als auch in NI DIAdem problemlos öffnen kann und alle Channel sehen/bearbeiten kann.

Vielleicht hast du ja noch eine Idee oder jemand anderes der in MATLAB mit HDF-Dateien arbeitet, kann mir einen Tipp geben.

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
NewBeeGuest
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2019, 14:12     Titel:
  Antworten mit Zitat      
Hallo zusammen,

ich wollte nur kurz mitteilen, dass ich eine (vorläufige) Lösung für mein Problem gefunden habe.

In der ArtemiS SUITE ist es möglich die HDF Datei als MATLAB 'filename.mat' Datei zu exportieren. Danach kann ich sie mit MATLAB einlesen und auf die Daten in einem sogenannten "struct" zugreifen.

Der Zugriff und ein erster Plott funktionieren also bereits Smile

Vielen Dank für die schnelle Hilfe und die Tipps. (vor allem Jan)

An der ein oder anderen Stelle ergben sich mir als Einsteiger in Zukunft sicher noch ein paar Fragen.
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 - 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.