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

Auf Variablen im MAT-File zugreifen

 

Günther64

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2009, 08:11     Titel: Auf Variablen im MAT-File zugreifen
  Antworten mit Zitat      
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?

Wäre sehr dankbar für einen Tip!


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 15.05.2009, 13:11     Titel:
  Antworten mit Zitat      
Hallo Günther,

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.

1. Mat-Datei mit Variablen
Code:

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
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Günther64

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2009, 13:11     Titel:
  Antworten mit Zitat      
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:

Code:

clear all;  
clc;

[num3]=load(uigetfile('*.mat'));                          %Auslesen MAT-File

%%

p1=num3.Data(1:end,920);                                             %Druck1
p2=num3.Data(1:end,921);                                             %Druck2

plot(p1,p2);                                                          %Plot


 


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?

Hoffe die Beschreibung war genau genug!

Vielen Dank schonmal,

Günther
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 26.05.2009, 15:26     Titel:
  Antworten mit Zitat      
Hallo Günther,

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);

plot(vars.p1,vars.p2)


Falls das noch mehr Variablen betrifft, sollte man das allerdings automatisieren. Oder wie gesagt an der Datendatei angreifen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Günther64

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2009, 14:06     Titel:
  Antworten mit Zitat      
Funktioniert, vielen Dank nochmal!!

Gruß
 
aziz
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 25.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2012, 10:20     Titel:
  Antworten mit Zitat      
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
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 - 2025 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.