Forum: PC-Programmierung Variable in mat File suchen und Inhalt speichern - wo ist der Fehler?


von Dennis07 (Gast)


Lesenswert?

Hallo zusammen,

Ich möchte in einem mat file eine Variable suchen:

Code:
1
A = load(dataFile, '-regexp', 'gen')

Ich hatte mir das so gedacht dass er die Variable die 'gen' enthält, 
nämlich generator, sucht und deren Inhalt in A kopiert (nämlich 425.960 
Werte).
Stattdessen kopiert er mir in A aber nur den Namen der Variable die 
'gen' enthält und deren Größe. D.h. in A steht:

[i]generator: [425960x1 double] [/i]

Was mache ich falsch? Was muss man ändern?

von Nicolas S. (Gast)


Lesenswert?

Um genau zu sein erzeugt er ein structure A mit der Untervariable 
A.generator. Also generator = A.generator;

von Karl H. (kbuchegg)


Lesenswert?

Wovon sprichst du eigentlich?
Immer drann denken:
Wir hier auf der anderen Seite des Bildschirms wissen nicht
* woran du arbeitest
* welche Hilfsmittel du benutzt
* welche Sprache du benutzt
* worum es überhaupt geht

Wenn du es nicht erzählst, kann dir kein Mensch helfen.
Denk dir einfach, du rufst bei der Seelsorge an. Denkst du, dass dort 
irgendwer mit deiner Anfrage irgendetwas anfangen könnte oder dich an 
einen Spezialisten für dein Problem vermitteln könnte?

von Dennis07 (Gast)


Lesenswert?

Sorry, ich war so vertieft dass ich das vergessen habe. Es geht um 
MATLAB!

Danke Nikolas! Gibt es eine Möglichkeit im Struct auf die Daten 
zuzugreifen, wenn ich den Namen der Variablenm nicht kenne? Also 
angenommen der Name, hier generator, könnte von Fall zu Fall 
unterschiedlich sein, ich möchte aber immer dieses Array einlesen.

von Nicolas S. (Gast)


Lesenswert?

Naja, also eigentlich steht es in der Hilfe. Stichwort: "dynamic field 
names".

von Dennis07 (Gast)


Lesenswert?

Ich habe es jetzt erst mal so probiert, dass ich mir den Namem des 
Arrays mit fieldnames() hole
1
name = fieldnames(A)

Damit wäre das Problem erledigt, dass ich nicht weis wie das Array 
heißt. Jetzt möchte ich mir die Daten holen:
1
generator = getfield(A; {name})

Das funktioniert aber nicht ("Function subsindex is not defined for 
values of class 'cell'" , Error in getfield.)

Oder gibt es generell einen einfacheren Weg? Das eigentlich Ziel ist aus 
Messdaten die von .mdf Format in .mat Format konfertiert wurden einen 
Messkanal zu holen von dem ich nicht sicher weis wie er heißt, es kommt 
aber sicher generator drin vor, also lade ich:
1
A   = load(dataFile, '-regexp', 'generator');

Und jetzt will ich die Daten aus dem Struct A ziehen, bisher ohne 
Erfolg.

von Nicolas S. (Gast)


Lesenswert?

name1 = char(name);
generator = A.(name1)

tut es. (Dynamische Feldnamen sind keine Cell-Indizierung).

von Dennis07 (Gast)


Lesenswert?

Funktioniert! Dank Dir Nicolas! Daran hab ich nicht gerdacht.

von Nicolas S. (Gast)


Lesenswert?

Ansonsten ist das goMatlab-Forum für Matlab-Fragen allerdings eher 
geeignet als Mikrocontroller.net.
Oder wenn man sich vor einem weltweiten Publikum blamieren will auch der
Central Newsreader.

Grüße
Nicolas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.