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

for - Schleife: Vereinfachung

 

Studentenwerk
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2015, 11:31     Titel: for - Schleife: Vereinfachung
  Antworten mit Zitat      
Hallo liebe Community,

ich möchte eine for Schleife mit folgender Struktur vereinfachen:

Code:
for j=1:100;
if j == 1
a = 20
else if j == 2
a = 25
else if j == 3
a = 42
else if........
else...

end end end

end


die Werte, die a annehmen soll, sind ebenfalls als Vektor im Workspace gespeichert...

Ich danke Euch Smile
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2015, 12:27     Titel:
  Antworten mit Zitat      
Suchst Du vielleicht einen Vektor?

Code:

zahlen = [20, 25, 42, ....]
a = zahlen(1) %=20
a = zahlen(2) %=25
a = zahlen(3) %=42
...
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Studentenwerk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2015, 12:37     Titel:
  Antworten mit Zitat      
Epfi hat Folgendes geschrieben:
Suchst Du vielleicht einen Vektor?

Code:

zahlen = [20, 25, 42, ....]
a = zahlen(1) %=20
a = zahlen(2) %=25
a = zahlen(3) %=42
...
 



Ich glaube, so lässt sich mein Problem nicht lösen.
Ich habe zwei verschachtelte forschleifen. Innerhalb der inneren wird eine selbst geschriebene Funktion 100 mal durchgelaufen, dabei wird ein Parameter verändert. Die äußere Schleife soll einen weiteren Parameter verändern, dieser soll allerdings nicht regelmäßig hochgezählt werden, sondern ganz bestimmte Werte annehmen.

Im ersten Durchlauf soll a = 20 sein, die innere Schleife soll 100 mal mit dem Wert a = 20 rechnen (und mir die Funktionswerte jeweils in einer Matrix speichern). Das klappt super, allerdings sieht meine äußere for Schleife so aus:


Code:

for j=1:12;
    if j == 1
        DN = 20;
    else if j== 2
            DN = 25;
        else if j == 3
                DN = 32;
            else if j == 4
                    DN = 40;
                else if j == 5
                        DN = 50;
                    else if j == 6
                            DN = 63;
                        else if j == 7
                                DN = 75;
                            else if j == 8
                                    DN = 90;
                                else if j == 9
                                        DN = 110;
                                    else if j == 10
                                            DN = 125;
                                        else if j == 11
                                                DN = 140;
                                            else
                                                DN = 160;
                                            end
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end

for i=1:100;
meine ergebnis matrix = meine funktion
end
end


 



Das geht doch bestimmt eleganter? Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.08.2015, 12:51     Titel:
  Antworten mit Zitat      
Zitat:
Ich glaube, so lässt sich mein Problem nicht lösen.

hast du es denn mal versucht?
für mich siht das so aus als würde das genau so gehen wie epfi sagt.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Studentenwerk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2015, 13:03     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
Zitat:
Ich glaube, so lässt sich mein Problem nicht lösen.

hast du es denn mal versucht?
für mich siht das so aus als würde das genau so gehen wie epfi sagt.



Code:


Ist das ein Befehl ( % ) oder wird ab dort auskommentiert? Wenn % ein Befehl ist, was ist der Rückgabewert?

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2015, 13:05     Titel:
  Antworten mit Zitat      
Verwende mal elseif statt else if - dann wird zumindest die Darstellung schon mal eleganter und Du sparst ne Menge end ...

Ansonsten kann ich mich nur Winkow anschließen. Du solltest meinen Vorschlag mal ausprobieren. Er tut das, was Du willst:


Code:

DN = [20, 25, 32 ....]
for j=1:12;
     for i=1:100;
        ergebnis(j,i) =  DN(j) * 5;
    end
end
 


Nachtrag: % leitetet einen Kommentar ein
Private Nachricht senden Benutzer-Profile anzeigen
 
Studentenwerk
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 14.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2015, 13:11     Titel:
  Antworten mit Zitat      
Epfi hat Folgendes geschrieben:
Verwende mal elseif statt else if - dann wird zumindest die Darstellung schon mal eleganter und Du sparst ne Menge end ...

Ansonsten kann ich mich nur Winkow anschließen. Du solltest meinen Vorschlag mal ausprobieren. Er tut das, was Du willst:


Code:

DN = [20, 25, 32 ....]
for j=1:12;
     for i=1:100;
        ergebnis(j,i) =  DN(j) * 5;
    end
end
 


Nachtrag: % leitetet einen Kommentar ein



Ich bin ein Trottel vor dem Herrn.
Besten Dank, klappt natürlich Wink
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 - 2024 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.