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

Laufvariable in Structure-Array-Bezeichnung

 

ladwien
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 29.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2015, 13:04     Titel: Laufvariable in Structure-Array-Bezeichnung
  Antworten mit Zitat      
Guten Tag zusammen Smile

nach dem ich hier immer fleißig mitlese und auch bereits vermehrt Lösungen für das ein oder andere Problem gefunden habe, habe ich diesmal selber ein anliegen und hoffe, dass mir jemand mit mehr Erfahrung helfen kann.
Nun zu meinem Problem.

Ich habe ein Skript geschrieben, dass mir mehrere .mat Files aus einem Ordner in den Workspace lädt. Dies funktioniert auch wunderbar:

Code:
[fname, pname] = uigetfile('*.mat', 'Bitte das erste Messprotokoll auswählen');
filename1 = fullfile(pname, fname);

FileList =dir([pname, '*.mat']);
length1=length(FileList);

for i=1:length(FileList)
    baseFileName= FileList(i).name;
    fullFileName=fullfile(pname,baseFileName);
    fprintf(1, 'Now reading %s\n', fullFileName);
    load(fullFileName);
end
 


Danach befinden sich alle Messdaten in structure arrays verpackt im Workspace und haben eine fortlaufende Nummerierung von i=1:50 mit der Bezeichnung StatischeMessung158A_i. Nun möchte ich aus allen diesen Messprotokollen die Messdaten in neue Matrizen abspeichern um sie für eine noch folgende Auswertung benutzen zu können.
Dafür habe ich bereits mit einer for Schleife angefangen, die folgendes machen sollte. Sie soll in das jeweilige Struct Array rein gehen (Sprich, StatischeMessung158A_i) dann unter Y(6).Data die Messwerte auslesen und diese wieder um die Matrix F schreiben. Mein Problem ist nur folgendes.

Ich weiß nicht, wie ich es schaffen kann, dass Matlab i als Laufvariable sieht. Folgender Fehler wird ausgegben:

"Undefined variable "StatischeMessung158A_" or class "StatischeMessung158A_" "

Code:
for i=1:length1
    F(length1,1)=zeros;
    F(1,1:length(StatischeMessung158A_(i).Y(6).Data))=StatischeMessung158A_(i).Y(6).Data;

end
 


Ist es überhaupt möglich eine Laufvariable bei der Bezeichnung eines Structure Arrays zu benutzen? Und wenn ja wie?
Gibt es eventuell auch eine andere Lösung?

Wäre super wenn mir jemand helfen könnte Very Happy

Grüße
Ladwien

Anbei noch ein Bild nachdem die Daten sich im Workspace befinden.

Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.09.2015, 13:41     Titel:
  Antworten mit Zitat      
Zitat:
st es überhaupt möglich eine Laufvariable bei der Bezeichnung eines Structure Arrays zu benutzen? Und wenn ja wie?

ja http://de.mathworks.com/help/matlab.....names-from-variables.html
wie kann man das selber finden? man guckt unter struct in der doc nach und findet das dann unter related examples.
alternativ kann man auch mit fieldnames arbeiten oder von anfang an keinen index im namen verstecken sondern ihn als index benutzen. dann hätte dein ansatz funktioniert.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ladwien
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 29.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2015, 15:05     Titel:
  Antworten mit Zitat      
Die Indexierung im struct funktioniert, keine Frage. Das hab ich schon gefunden und in einem anderen script getestet.

Ich versuche mal zu erläutern woher der Index i stammt. Er wird durch die Anzahl der Messungen festgelegt und ist demnach bereits im Namen der .mat Datei enthalten. Ohne den Index i wäre ja keine Nummerierung der Messungen möglich.

Bsp. StatischeMessung158A_1.mat usw weiter. i ist der Platzhalter für 1-50.
Private Nachricht senden Benutzer-Profile anzeigen
 
ladwien
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 29.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2015, 18:03     Titel:
  Antworten mit Zitat      
Lösung gefunden:

Zitat:
x{1,i}=eval(['StatischeMessung158A_' [num2str(i)] '.Y(7).Data']);
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.