Verfasst am: 15.05.2009, 08:11
Titel: Auf Variablen im MAT-File zugreifen
Guten Morgen allerseits!
Ich habe eine Frage zum Auslesen von MAT-Files, zu der ich im Archiv und in Lehrbüchern keine Antwort gefunden habe:
Ich habe ein MAT File mit 1200 Spalten und 25 Zeilen. Jede Spalte hat eine eigene Variablengröße als Überschrift (z.B. v für Geschwindigkeit), darunter dann Werte für verschiedene Messpunkte. Diese Variablengröße wird als "Header" erkannt, die Wertematrix als "Data". Nun möchte ich das MAT File so einlesen, dass ich danach Berechnungen mit den Variablengrößen aus dem MAT-File vornehmen kann. Also nach dem entsprechenden Befehl einfach nur x=v*5 zum Beispiel eingebe und Matlab die Variable v mit dem zugehörigen Vektor aus dem MAT-File erkennt. Ist dies überhaupt möglich?
in einem Matlab-MAT-File stehen grundsätzlich keine Zeilen und Spalten mit Überschrift, sondern Matlab-Variablen mit Inhalt. Deshalb wird nicht ganz klar, was Du tatsächlich vorliegen hast.
Dann liegen die Variablen im Workspace und können genau wie gewünscht weiterverarbeitet werden.
2. Ascii-Datei mit Überschriften (zufällig als *.mat gespeichert)
Das habe ich gerade zu reproduzieren versucht, aber mit meinem Import Wizard geht das nicht. Mat-Dateien müssen auch binäre Dateien enthalten.
3. Ascii-Daten mit Überschriften (als *.txt oder *.dat oder ...)
Auf der dritten Seite des Import Wizard hat man die Möglichkeiten "Create variables matching preview" und "Create vectors from each column using column names". Die zweite Möglichkeit anklicken. Auch dann können die Variablen wie gewünscht verwendet werden.
Aufgrund Deiner Beschreibung denke, ich dass der dritte Fall gegeben ist. Wenn Du noch weitere Fragen hast, einfach weiterfragen.
Herzliche Grüße
Bijick
_________________
>> why
Günther64
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 26.05.2009, 13:11
Titel:
Hi,
erstmal vielen Dank für deine schnelle Antwort! Also bei mir liegt Fall 1 vor (MAT-Datei mit 2 Variablen). Die eine heißt "Header" mit der Spezifikation <1197x22> char, die andere "Data" mit der Spezifikation <21x1197> double. In 'Header' stehen transponiert die Überschriften (z.B. p1 oder p2 für Druck) für die unterschiedlichen Spalten aus 'Data'.
Mir geht es im Prinzip nur darum, auf die Überschriften (wie z.B. p1, p2) zuzugreifen. Bisher habe ich es so geregelt, dass ich in meinem m-file einfach nur auf die Spalten von 'Data' durch Angabe der Spaltennummer zugegriffen habe:
Wenn aber p1 auf einmal in Spalte 910 statt 920 steht, funktioniert das nichtmehr bzw. wird der falsche Wert ausgelesen. Wie kann ich also in meinem m-file automatisch auf diesen Druck zugreifen und die zugehörige Spalte in 'Data' verknüpfen. Oder geht das garnicht, da 'Header' in so einem komischen Format vorliegt?
vielen Dank für die genaue Beschreibung. Ich würde aber gern noch mal einen Schritt zurückgehen. Woher kommen denn die Daten? Ich nehme mal an, dass sie aus einem Ascii-File kommen, aus dem sie irgendwie eingelesen werden, vielleicht mit dem Import Wizard. Dann könnten wir das Einlesen nochmal etwas anders durchführen, wodurch die Zuordnung der Namen zu den Daten leichter wird.
Falls die Ascii-Datei nicht mehr vorliegt, muss es auch ohne gehen.
Probier mal:
Code:
Header2 = Header';
[i,j]=ind2sub(size(Header2),findstr(Header2(:)','p1'));
name = Header(j,~isspace(Header(j,:)));
vars.(name) = Data(:,j);
[i,j]=ind2sub(size(Header2),findstr(Header2(:)','p2'));
name = Header(j,~isspace(Header(j,:)));
vars.(name) = Data(:,j);
Hallo zusammen
kann mir jemend sagen,wie ich folgendes mache:
also ich möchte ein mat-file mit der name 20110719.mat im workspace öffnen und danach umbenennen (nicht manuell) und dann unter die neue name speichern
danke
aziz
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
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.