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

Variablennummerierung mit Schleife

 

Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2012, 12:04     Titel: Variablennummerierung mit Schleife
  Antworten mit Zitat      
Hallo,

ich hab ein Problem bei der Indizierung von Matrizen.

Ich will mit einer for Schleife eine gewisse Anzahl an Matrizen erstellen.
Code:
for i=1:1:AnzahlMatrizen
            (['Kombination' num2str(i)]) = ones(1,n);
            (['Kombinationswerte' num2str(i)]) = ones(1,n);
           end


Es funktioniert jedoch nicht, dass die Matrizen mit den Namen Kombination 1 bis Kombination n angelegt werden. Wie kann ich das Problem lösen. Es kommt mir auch nur darauf an.

Gruß
Troll


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.07.2012, 13:50     Titel: Re: Variablennummerierung mit Schleife
  Antworten mit Zitat      
Hallo Troll,

Ja, genau, und das ist auch gut so. Einen Haufen von Variablen zu erstellen, die eine Indizierung in ihrem Namen verstecken, führt zu sehr kompliziertem Code, der kaum zu debuggen ist und nur sehr mühsam erweitert werden kann.
Deshalb wird dies auch in den FAQ behandelt: http://matlab.wikia.com/wiki/FAQ#Ho......2C....2CA10_in_a_loop.3F.

Es ist viel besser Indizes als Indizes zu verwenden! Klingt trivial, ist es auch:
Code:

Kombination = cell(1, AnzahlMatrizen);  % Pre-allocation!
Kombinationswerte = cell(1, AnzahlMatrizen);  % Pre-allocation!
for i = 1:AnzahlMatrizen
  Kombination{i} = ones(1,n);
  Kombinationswerte{i} = ones(1,n);
end

Sieht schon gleich hübscher aus.

Nebenbei hatte Dein Ansatz auf der linken Seite einen String erzeugt. Zwar wird eine Variable auch per String adressiert, das bedeutet aber nicht, dass ein String als Variable benutzt werden kann. Das ist mit Namen von Menschen genauso: Ich kann zwar eine Person "Jörg" nennen und "Jörg" auch einen Zettel schreiben. Wenn ich dann aber "Jörg = 'reich'" dazu schreibe, wird die Person auch nicht mehr Geld in der Tasche haben. Schade eigentlich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2012, 14:42     Titel:
  Antworten mit Zitat      
Hallo,

danke für deine Antwort.
Ich benötige jedoch mehrere Einzelmatrizen, da die Maximale Größe einer Matrix (sowohl Dimension als auch Speicher) bei meiner Anwendung schnell erreicht wird und dort keine Nullen drin stehen.

Von daher würde ich gern eine Schleife haben die mir n einzelne Matrizen generiert, die alle Kombination x heißen. Beispiel:
Kombination1
Kombination2
Kombination3
...
Alle sollen eine mit Einsen besetzte Matrix sein.

Gruß
Christoph
 
Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2012, 18:49     Titel:
  Antworten mit Zitat      
hab eine möglichkeit gefunden.

Gruß
Troll
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.07.2012, 22:04     Titel:
  Antworten mit Zitat      
Hallo,

meines Wissens haben Cell Arrays abgesehen von den Zeigern, die abgelegt werden müssen, die gleiche Speichereffizienz wie mehrere verschiedene Variablen.

Ich stimme Jan zu, dass der Code auf deine Art schnell schwierig bis unmöglich zu verstehen und zu debuggen wird.

Grüße,
Harald
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: 31.07.2012, 04:29     Titel:
  Antworten mit Zitat      
Hallo Troll,

Zitat:
Ich benötige jedoch mehrere Einzelmatrizen, da die Maximale Größe einer Matrix (sowohl Dimension als auch Speicher) bei meiner Anwendung schnell erreicht wird und dort keine Nullen drin stehen.

Ich verstehe nicht, weshalb diese Argumente die Nutzung eines Cell-Arrays ausschließen.

EVAL ist auf jeden Fall eine schlechte Alternative.

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.