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

automatisches erzeugen und bennen von n Matrizen

 

vincentvega
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 27.07.2010, 20:05     Titel: automatisches erzeugen und bennen von n Matrizen
  Antworten mit Zitat      
Ich hab ein algorithmus welcher eine beliebige Zahl n ermittelt.

Nun soll mittels eines algorithmuses n-mal leere Matrizen erzeugt werden die alle nach einem Schema benannt werden sollen.

Beispiel: n=5

Es soll nun ein algorithmus geschrieben werden, dass mir folgendes eigenstäntig generiert


testmatrix01=zeros (x,y)

testmatrix02=zeros (x,y)

testmatrix03=zeros (x,y)

testmatrix04=zeros (x,y)

testmatrix05=zeros (x,y)
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: 28.07.2010, 01:16     Titel: Re: automatisches erzeugen und bennen von n Matrizen
  Antworten mit Zitat      
Hallo vincentvega,

vincentvega hat Folgendes geschrieben:

Nun soll mittels eines algorithmuses n-mal leere Matrizen erzeugt werden die alle nach einem Schema benannt werden sollen.


Das ist zwar mit EVAL in Matlab möglich:
Code:
for i = 1:n; eval(sprintf('name%d = [];', i)); end

Ich würde aber deutlich davon abraten. Es ist immer wesentlich sicherer und übersichtlicher ein Cell oder Struct Array für solche Zwecke zu benutzen:
Code:

Code:
S = []; for i=1:n; S.(sprintf('name%d', i)) = []; end

Programme die per EVAL Variablen dynamisch erstellen sind instabil, schwer zu debuggen und langsam.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 28.07.2010, 10:26     Titel:
  Antworten mit Zitat      
Danke für die schnelle antwort,

aber das hilft mir nicht ganz weiter.

ich will die dynamisch erzeugten matrizen nicht in einer struktur-cell haben sondern separat erzeugen.
nach dieser separaten erzeugung will ich sie gleich weiterverarbeiten.

ich brauche vielmehr ein mittel was mir ein string als variablennamen umformt!
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: 28.07.2010, 11:23     Titel:
  Antworten mit Zitat      
Hallo vincentvega,

bitte lies doch meine letzte Antwort nochmal. Immerhin habe ich genau dafür die Lösung mittels EVAL angegeben. Hast Du es zumindest versucht?

Wie gesagt ist dies aber ein ausgesprochen fehleranfälliger Weg und ich rate deutlich davon ab. EVAL überschreibt Dir willkürlich die Namen von Funktionen und dieses und andere Foren wimmeln nur so von verzweifelten Anwendern, deren Programme von EVALs undebugbar werden.
Es gibt keinen notwendigen Grund dynamisch Variablen zu erzeugen, wenn man das mit sicheren Structs und Cell-Arrays auch erreichen kann.

Es gibt übrigens keine "struktur-cell". Structs und Cells sind zwei wichtige sehr verschiedene Typen in Matlab und die unkorrekte Benennung erzeugt im Allgemeinen mehr Konfusion als nötig.

Wenn Du mit "String als Variablen-Namen umformen" etwas komplett anderes meinst, etwa GENVARNAME, dann müsstest Du das noch mal genauer erklären.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 28.07.2010, 11:28     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich hab alle drei vorschläge versucht und von denen kommt eval dem am nächsten.

Bei der Variante mit

S=[]....

gibt es das problem dass alle erzeugten Variablen in S enthalten sind und nicht eigenständig stehen. Wenn ich für die weiterverarbeitung eines elements von S dieses element aufrufen will muss ich mir wieder etwas einfallan lassen wie ich das in einer schleife tue.

eval reicht mir im moment aus. mein programm ist recht überschaubar sodass ich mit eval auskomme.

danke für die mühe

gruß,

vinny
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.