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

Schleife mit String

 

ozzyos
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2012, 10:26     Titel: Schleife mit String
  Antworten mit Zitat      
Hallo,

ich würde folgenden code:
Code:

mean.gene=mean(F(:,1));
mean.econ=mean(F(:,2));
mean.mone=mean(F(:,3));
mean.conc=mean(F(:,4));
mean.tota=mean(F(:,6));
 


in einer Schleife ausdrücken, so das ich zu beginn, den "Text" definiere und dann eine for-Schleife diesen Text abarbeitete. Die Idee, welche aber nicht klappt ist also:

Code:

x={gene econ, mone}
for i=1:3
     name=x(i)
calculation=mean(F(i))
mean.'name'=calculation
 


Leider will das nicht ganz. Hat jemand ne Idee wie man das macht? Am besten wie man generell Schleife asu einem "Text" erstellt, könnte ja auch nützlich sein um etwas zu speichern oder auszulesen oder sonst was wo man eben mit ner Schleife deutlich komfortabler ist.

Vielen Dank
ozzy
Private Nachricht senden Benutzer-Profile anzeigen


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2012, 18:35     Titel:
  Antworten mit Zitat      
Hallo ozzyoz,
erstens ist es schlecht mean als Variablennamen zu benutzen, falsch, wenn Du gleichzeitig mean als Funktion benutzt.
zweitens, so:
Code:

x={'gene', 'econ', 'mone'};
for i=1:3
     name=x(i);
     mittel.(name)=mean(F(:,i));
end;


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
ozzyos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 08:41     Titel:
  Antworten mit Zitat      
Vielen Dank für den Tipp, sieht sieht sehr gut aus, leider kommt bei mir die Fehlermeldung:

"Argument to dynamic structure reference must evaluate to a valid
field name."


Irgendwas mache ich scheinbar falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 18:58     Titel:
  Antworten mit Zitat      
Für Feldnamen sind nicht alle Zeichen erlaubt (a-z und 0-9,
wobei der Name mit einem Buchstaben anfangen muß).
Es gelten die gleichen Regeln wie für Variablennamen.

Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.09.2012, 13:28     Titel:
  Antworten mit Zitat      
Hallo ozzyos,

Siehe: genvarname.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
ozzy-os

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2012, 15:38     Titel:
  Antworten mit Zitat      
danke für die Hinweise, aber ich denke ich stehe auf dem Schlauch. Wenn ich exakt den Befehl von Sirius übernehmen, kommt die Fehlermeldung dennoch, obwohl ja alles passt.

ozzy
 
ozzyos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2012, 15:55     Titel:
  Antworten mit Zitat      
ganz komisch, gebe ich
Code:

varnem=genvarnem('eins')
 

macht er mir ein "char" draus.

gebe ich ein
Code:

x={'eins'}
varnem=genvarnem(x)
 

macht er mit ein cell draus.

das wird das problem sein. denn mit fall eins kann idie schleife laufen lassen und alles wird gut. mit fall zwei aber eben nicht. nur will ichja gerade fall 2, damit ich alle varibalen namen davor "auflisten" kann.

grüße
ozzy

Nachtrag: so hab ichs hinbekommen

x={'gene', 'econ', 'mone'};
for i=1:3
name=char(x(i))
mittel.(name)=mean(F(:,i));
end;

vielen dank für die ganze hilfe und geduld!
ozzy
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.09.2012, 17:47     Titel:
  Antworten mit Zitat      
Hallo ozzyos,

Ja, Siruis' Code hat einen Bug:
Code:
x={'gene', 'econ', 'mone'};
for i=1:3
     name=x{i};   % Geschweifte Klammern!
     mittel.(name)=mean(F(:,i));
end

Gruß, Jan
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.