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

Programmierung einer for-Schleife mit Variablen-Indizes

 

datjoesi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2013, 17:47     Titel: Programmierung einer for-Schleife mit Variablen-Indizes
  Antworten mit Zitat      
Hallo liebe Matlab-Experten,

ich habe gerade erst angefangen in Matlab zu programmieren und Probleme bei der Erstellung einer for Schleife.

Insgesamt besteht mein Programm aus einem Cell Array. Jede Zelle beinhaltet eine Matrix.

Den einzelnen Matrizen sind Variablennamen mit fortlaufender Nummer bzw. Indizes zugeordnet z.B. NP1 ... NP8 oder F1F2d ... F1F8d.

Nun möchte ich gerne eine for-Schleife zur Normierung der Matrixeinträge programmieren. Manuell sieht mein Code z.B. folgendermaßen aus:

Code:

[~,m_13] = size(NP1*F1F3d*NP3');
x_max_13 = m_13*3^2;
Z24 = 3*NP1*F1F3d*NP3'/x_max_13;
 
[~,m_14] = size(NP1*F1F4d*NP4');
x_max_14 = m_14*3^2;
Z25 = 3*NP1*F1F4d*NP4'/x_max_14;
 
[~,m_15] = size(NP1*F1F5d*NP5');
x_max_15 = m_15*3^2;
Z26 = 3*NP1*F1F5d*NP5'/x_max_15;
 


Nun möchte ich die Berechnungen gerne automatisieren aber ich weiß nicht wie man die Variablen-Indizes und die Transponierten NP3' ... NP5' in die Schleife integriert.

Mein Ansatz sah so aus...
Code:

for i = 13:18 k = 3:8
     l = 4:9
      [~,m(i)] = size('NP1*F1Fd',(k)*'NP',(k)');
      x_max(i) = m(i)*3^2;
      Z2{l} = 3*'NP1*F1Fd',(k)*'NP',(k)'/x_max{i};
end
 


Über Antworten würde ich mich sehr freuen!

Vielen Dank schon mal im Voraus.


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.09.2013, 18:52     Titel:
  Antworten mit Zitat      
ok das geht zwar aber nur mit eval..... davon würde ich dir dringend abraten
du hast den anfänger fehler begangen den indize im variablen namen zu verstecken. das ist sehr schlecht wie du sihst. willst du das trotzdem machen solltest du mit structs arbeiten. besser währe allerdings gleich den index auch als index zu verwenden Smile
du sagtest ja bereits das du cell arrays benutzt. dann solltest du das da benutzen^^
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
datjoesi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2013, 19:36     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort. Aber so ganz ist mir das glaube ich noch nicht klar.

Meinst du mit "den index auch als index zu verwenden", dass ich die jeweiligen Zellen im Cell Array direkt ansprechen soll?

Also wenn der Name meines Cell Arrays z.B. "Zelle" lautet, dass ich die entsprechenden Inhalte mit Zelle{Zeile,Spalte} ansprechen muss und nicht mit ihren Variablennamen?
 
Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 30.09.2013, 20:51     Titel:
  Antworten mit Zitat      
genau, nichts was irgendwie numeriert bzw iteriert werden soll
sollte im variablennamen auftauchen.

Wie genau du deine Daten du deine Daten strukturierst ist egal.
Aber die Struktur der Daten ist der halbe Algorithmus und
unendlich dimensionale, verschachtelbare Container wie Cell-arrays
bieten genügend Moeglichkeiten

Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen
 
Banana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 13:03     Titel:
  Antworten mit Zitat      
Hi,

ich hab zu dem Thema auch ne Frage:
Ich hab ne Variable, hier x, der ich in einer Schleife nacheinander einen Wert aus dem Vektor U zuweisen will. X soll hierbei den Index des jeweiligen Schleifendurchlaufs haben. Also X_1, X_2, X_3,... Wie der Index aussieht ist völlig egal, es sollt in der Ausgabe nur erkennbar sein, damit ich später damit weiterrechnen kann und mir bei der weitern Auswertung meiner Daten leichter tu.
Hier ein kleines Beispiel wie es ungefähr aussehen sollte.

Code:

for n=1:6
    x_n = U(n,:)
end


Wie funktionert es, dass der Index meiner Variablen x quasi mit hochgezählt wird?

Danke schon mal für euere Hilfe.
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.10.2013, 13:44     Titel:
  Antworten mit Zitat      
genau was du dort gemacht hast ist das was der vorgänger hier auch falsch gemacht hat. die lösung ist die gleiche. cell benutzen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Banana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 15:22     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Ich befürchte, ich bin nur irgendwie zu doof dafür, das in Matlab umzusetzen.... Confused Könntest du mir bitte ein Beispiel geben, wie das aussehen soll?
Danke schon mal.
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 02.10.2013, 15:33     Titel:
  Antworten mit Zitat      
Code:

for n=1:6
x{n}=u(n,:);
end
 


damit wäre alles (egal welcher datentyp) im zellarray x .

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2013, 16:03     Titel:
  Antworten mit Zitat      
Maaaann, dass ist ja eigentlich echt einfach. Danke!! Da stand ich ja dermaßen aufm Schlauch *ansHirnklatsch*
 
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.