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

Variablen mit Schleife definieren

 

Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2012, 15:23     Titel: Variablen mit Schleife definieren
  Antworten mit Zitat      
Hallo,

ich habe ein Problem und bin absoluter Matlab-Anfänger. Ich will eine Variable erzeugen unter der weitere Variablen abgelegt sind. Jedoch ist die Anzahl der Untervariablen verschieden und kann teilweise stark schwanken. Ich habe den Programmcode wie folgt ausgelegt.

n = input('Geben Sie die Anzahl der Aufgaben ein! ');

for i=1:1:n
wissensspeicher.Aufgabe(i)=ones(5,5);
end

Ich kriege jedoch immer wieder diesen Fehler und verstehe nicht warum. Mad

In an assignment A(I) = B, the number of elements in B and I must be the same.

Error in Untitled (line 4)
wissensspeicher.Aufgabe(i)=ones(5,5);


Kann mir jemand von euch weiterhelfen?

Vielen Dank und Gruß
Troll


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 04.07.2012, 15:44     Titel:
  Antworten mit Zitat      
Hallo Troll,

du hattest es fast richtig, und die 1 bei der for schleife brauchst de nicht schreiben
Code:

for i=1:n
    wissensspeicher(i).Aufgabe=ones(5,5);
end


*edit: Grundsätzlich sollte man noch preallokieren, falls es zu hohen n oder allgemein zu Performanceproblemen kommen sollte

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2012, 19:35     Titel:
  Antworten mit Zitat      
Hallo Kascho,

die zusätzliche 1 in der for-Schleife war ist ja eigentlich nur dafür da in 1er Schritten voranzugehen.

Deine Lösung ist auf jedenfall auch nicht das was ich brauche. Wenn ich z.B. schreibe:

wissensspeicher.aufgabe1=ones(5,5)
wissensspeicher.aufgabe2=ones(5,5)

dann hinterlegt er hinter wissensspeicher zwei Variablem mit den Namen aufgabe 1 und aufgabe 2 mit jeweils einer 5x5 Matrix vollbesetzt mit Einsen. Das will ich jetzt mit der Schleife für n Aufgaben machen. Verstehst du jetzt besser was ich meine?

Dementsprechend kann in deiner Lösung das (i) nicht richtig plaziert sein.

Kann mir jetzt besser jemand helfen?`

Gruß
Troll
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.07.2012, 21:36     Titel:
  Antworten mit Zitat      
Hallo,

was du beschreibst, würde mit
Code:
wissensspeicher.(['aufgabe' num2str(i)])=ones(5,5)

gehen.

Die Frage ist jedoch, was du damit bezweckst. Wenn du die Aufgabe wieder abrufen willst, musst du da mit einem ähnlichen Konstrukt herangehen. Da wäre die von Kascho vorgeschlagene Variante zwar nicht das, was du ursprünglich wolltest, aber dafür deutlich handlicher.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 04.07.2012, 23:09     Titel:
  Antworten mit Zitat      
Abend Troll,

Zitat:
Das will ich jetzt mit der Schleife für n Aufgaben machen. Verstehst du jetzt besser was ich meine?


Ganz ehrlich? Nein. Versuche bitte nochmal dein Problem bzw. deine Aufgabe bzw. dein Ziel etwas näher zu erläutern.
Falls du deine Daten später noch sinnvoll und einfach verwenden möchtest, ist die Variante aus meinem ersten Post, so wie es Harald schon sagte, deutlich einfacher zu handeln.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2012, 09:38     Titel:
  Antworten mit Zitat      
Hallo,

also die Lösung von Harald ist eigentlich das was ich gesucht habe. Ich will jetzt in den einzelnen Matrizen Werte hinterlegen, mit denen ich später Berechnungen durchführen kann.

Ist es einfacher das nur mit einer Ebene zu machen und den wissensspeicher wegzulassen? Ist meine Version den viel schwieriger?

Grüße
Troll
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2012, 09:54     Titel:
  Antworten mit Zitat      
man kann auch cell-arrays verwenden statt struct arrays:

Code:

for i=1:n
wissensspeicher.Aufgabe{i}=ones(5,5);
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.07.2012, 15:06     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ist es einfacher das nur mit einer Ebene zu machen und den wissensspeicher wegzulassen? Ist meine Version den viel schwieriger?

Wenn keine weiteren Daten mitgespeichert werden sollen, wäre folgendes am einfachsten:

Code:
Aufgabe = cell(1,n);
for i=1:n
Aufgabe{i}=ones(5,5);
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Troll

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2012, 16:17     Titel:
  Antworten mit Zitat      
Vielen Dank für eure Antworten. Ihr habt mir sehr weitergeholfen. Wenn ich nochmal Hilfe benötige, dann melde ich mich wieder. Smile

Grüße
Troll
 
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.