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

struct Variablenname hochzählen?

 

Anna_Bauer
Forum-Newbie

Forum-Newbie



Beiträge: 7
Anmeldedatum: 05.04.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 07.04.2011, 12:37     Titel: struct Variablenname hochzählen?
  Antworten mit Zitat      
Hallo Leute =)

ich hab da leider noch ein kleines Problem und hoff, dass ihr mir helfen könnt.

Ich habe auch hier im Forum und in Google schon danach gesucht und auch einiges gefunden, nur leider funktioniert des mit einer Struktur nicht.

Das hier ist mal der Code:

Code:

F101108_Text(150,10) = 1;   %Beispiel

for i = 1:length(F101108_Text)
     i_con = num2str(i);     %konvertiert i in String

     [F101108.Toplist,i_con,.Top1] = F101108_Text(bestimmterBereich(:,1),4);
end;
 


Ich möchte, dass es "Toplist" hochzählt, da im ersten Durchlauf der Bereich aus "F101108_Text" in "Toplist1", beim zweiten Durchlauf in "Toplist2", usw. gespeichert werden soll.
Leider geht das wie oben nicht.

Ich habe hier im Forum etwas gefunden:
Code:

assignin ('base',['F101108.Toplist' i_con '.Top1'], F101108_Text(bestimmterBereich(:,1),4));
 


Wenn ich das in meinen Code einbaue, geht es leider auch nicht.
Es kommt immer dieser Fehler:
"Invalid variable name "F101108.Toplist1.Top1" in ASSIGNIN."

Wenn ich allerdings die Punkte aus dem Namen entferne, funktioniert es.
Leider brauche ich dies als Struktur.

Ich hoffe, dass ihr mir weiterhelfen könnt.

Gruß
Anna =)
_________________

............................................................
| Mach dein Ding und leb dein Leben Wink |
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 07.04.2011, 12:48     Titel:
  Antworten mit Zitat      
Hallo Anna,
Code:

F101108_Text(150,10) = 1;   %Beispiel

for i = 1:length(F101108_Text)
     i_con = num2str(i);     %konvertiert i in String

     F101108.Toplist(i).Top1 = F101108_Text(bestimmterBereich(:,1),4);
end;
 


Zugreifen tust du dann mittels:
Code:

F101108.Toplist(1).Top1
F101108.Toplist(2).Top1
F101108.Toplist(3).Top1
...
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 07.04.2011, 12:50     Titel:
  Antworten mit Zitat      
Hallo

bei Strukturen kann man Dynamische Felder nutzen:
Die Form ist folgende: Structname.('DynamischesFeldalsString')
Code:

F101108_Text(150,10) = 1;  

for i = 1:length(F101108_Text)
     i_con = num2str(i);     %konvertiert i in String

F101108.(['Toplist', i_con]).Top1] = F101108_Text(bestimmterBereich(:,1),4);
end;

 



Außerdem frage ich mich,
wäre es nicht einfacher: Struct Array zu benutzen:

Code:

F101108_Text(150,10) = 1;   %Beispiel

for i = 1:length(F101108_Text)
     i_con = num2str(i);     %konvertiert i in String

     F101108.Toplist(i).Top1 = F101108_Text(bestimmterBereich(:,1),4);
end;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Anna_Bauer
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 7
Anmeldedatum: 05.04.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 07.04.2011, 13:20     Titel:
  Antworten mit Zitat      
Hallo,

es geht!!! =)

Es über die Dynamischen Felder zu machen hat funktioniert.

Das
Code:
F101108.Toplist(i).Top1 = F101108_Text(bestimmterBereich(:,1),4);
 

hatte ich auch schon versucht, allerdings speichert es mir komischerweise alles in F101108.Toplist.Top, also das (i) wird irgendwie nicht übernommen.

Also vielen vielen Dank euch beiden,
seit die besten =)

Gruß
Anna
_________________

............................................................
| Mach dein Ding und leb dein Leben Wink |
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 07.04.2011, 15:13     Titel:
  Antworten mit Zitat      
Hallo Anna,
doch er übernimmt das.

Was du machst, ist für jeden Index ein neues field zu erzeugen. Damit ist die Unterteilung "sichtbarer".

Code:

>> F101108.(['Toplist' num2str(1)]).Top1 = 98
F101108 =
    Toplist1: [1x1 struct]
>> F101108.(['Toplist' num2str(2)]).Top1 = 34
F101108 =
    Toplist1: [1x1 struct]  % Field als 1x1 struct
    Toplist2: [1x1 struct]  % zusätzliches Field als 1x1 struct
 


Die andere Variante speichert alles in einem field, aber du kannst über den Index auf die einzelnen Werte Zugreifen.

Code:

>> F101108.Toplist(1).Top1 = 98
F101108 =
    Toplist: [1x1 struct]  % Field als 1x1 struct
>> F101108.Toplist(2).Top1 = 34
F101108 =
    Toplist: [1x2 struct]  % Das gleiche field erweitert auf ein 1x2 struct
 


Also er unterscheidet das schon und übernimmt es auch.
Er schreibt es zwar in das gleiche field, aber man kann getrennt drauf zugreifen.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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.