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

Werte aus Struct über for Schleife auslesen

 

morisq
Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.03.2012, 14:36     Titel: Werte aus Struct über for Schleife auslesen
  Antworten mit Zitat      
Hallo Zusammen,

ich habe innerhalb einer routine einen Struct mit folgendem Aussehen:

Struct.var_1;
Struct.var_2;
Struct.var_3;
Struct.var_4;
.
.
.
.
.

Nun nmöchte ich über eine for-Schleife die Werte aus dem Struct nach und anch auslesen.
Mein Ansatz war bisher folgender:

Code:
for i=1:1:10
value = Struct.var_'num2str(i)';
end


aber ohne Erfolg.

Hat Jemand zufällig dieses Problem schonmal gelöst?

MfG

Danke
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: 13.03.2012, 14:46     Titel:
  Antworten mit Zitat      
es ist nicht schlau laufindexe im namen unterzubringen anstadt sie gleich bei der deffinition als index zu verwenden. das führt immer zu solchen problemen. außerdem ist es glaube ich nicht gut die variable so zu nennen wie der befehl sie zu erstellen. könnte passieren das du interne matlab befehle überschreibst.
dein problem kann aber wie folgt gelöst werden
Code:
Struct.var_1=1;
Struct.var_2=2;
Struct.var_3=3;
Struct.var_4=4;
for i=1:1:4
value(i) = Struct.(['var_' num2str(i)]);
end  
 

oder
Code:
Struct.var_1=1;
Struct.var_2=2;
Struct.var_3=3;
Struct.var_4=4;
names=fieldnames(Struct);
value=nan(length(names),1);
for k=1:length(names)
    value(k)=Struct.(names{k});
end
 

ich würde allerdings empfehlen gleich beim erstellen der variablen den index auch als index zu verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Blackbrook
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 06.02.09
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 13.03.2012, 14:55     Titel:
  Antworten mit Zitat      
Ich habe sowas in der Art mit Zellen gelöst:

Var{1,1}.val = 5;
Var{1,2}.val = 2;
...

So kann man mit

Code:
for i = 1 : 5
    var_temp = Var{1,i}.val;
end


arbeiten.

Viele Grüße,

Blackbrook
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.03.2012, 15:46     Titel:
  Antworten mit Zitat      
Ok. Ich versuche nun die eingelesenen Werte edit Feldern aus meinem GUI zuzuweisen.

Code:
for k=1:Qs
   str = genvarname([num2str(i),'_alpha_v_', num2str(k)]);
   eval([str '= Alpha_V(k,1);']);    
   set(handles.edit(genvarname(str)), 'String', Alpha_V(k,1));
   i = i + 2;
end


leider kann ich den Index von meinen edit handles nicht zählen lassen. Oder übersehe ich hier was?
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Themenstarter

Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 14.03.2012, 11:11     Titel:
  Antworten mit Zitat      
Ich habe es nun über eine Matrix gelöst, die auszulesen und durchzuzählen war einfacher. Bei Structs blicke ich einfach noch nciht genug durch. Falls ich dafür mal ne elegante Lösung finde poste ich sie hier.

Danke für die Hilfe Smile
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.