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

Indizierung einer Variablen in einer for-Schleife

 

Slamdunker23
Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 11.02.2013, 17:28     Titel: Indizierung einer Variablen in einer for-Schleife
  Antworten mit Zitat      
Hallo zusammen.

Folgendes Beispiel habe ich:

4 Arrays gegeben: A1, A2, A3, A4

Diesen vier Arrays will ich in einer for-Schleife (1:4) jeweils eine neue Zeile hinzufügen.

Wie indiziere ich das Array in einem Durchlauf, wenn ich mit dem Index der Schleife (beim ersten Durchlauf: 1) auf den Arraynamen (A1) verweisen will?

Vielen Dank für eure Hilfe!

Daniel
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: 11.02.2013, 18:17     Titel: Re: Indizierung einer Variablen in einer for-Schleife
  Antworten mit Zitat      
Hallo Slamdunker23,

Die Frage ist ein absoluter Klassiker, die in den Matlab Foren schon viele tausende Male beantwortet wurde. Das Lesen eines MATLAB-FAQ ist wärmstens zu empfehlen.

Die Lösung ist einfach: Das macht man am besten gar nicht. Einen Index in den Namen der Variablen zu packen ist einfach eine zu schlechte Idee, denn wie Du ja selbst gerade merkst, macht das nur Schwierigkeiten. Besser wäre es natürlich einen Index als Index zu verwenden:
Code:
A{1} = rand(2);
A{2} = rand(2);
A{3} = rand(2);
A{4} = rand(2);

Dann ist der Aufruf in einer Schleife trivial. Oder ein 3D-Array wie A(:, :, 1), falls alle Arrays die gleichen Dimensionen besitzen. Oder wenn es aus anderen Gründen wirklich praktisch ist, einen Variablen-Namen mit Index zu versehene (und das ist wirklich sehr sehr selten der Fall), hilft "dynamic fieldnames":
Code:
Data.(sprintf('A%d', 1)) = 2;

Also den Namen per SPRINTF erzeugen und in Klammern als Feldnamen verwenden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 12.02.2013, 11:12     Titel:
  Antworten mit Zitat      
Hallo Jan.

Vielen Dank dir, auch für deine Erklärung.
Hier ist eindeutig das Verständnis für die Umsetzung besser, als nur eine Suche nach einem geeigneten Code.

Ich werde dies in Zukunft beachten.

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