|
|
Addition möglichst ohne Schleife |
|
Gül |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 09:22
Titel: Addition möglichst ohne Schleife
|
 |
|
 |
|
Einen wunderschönen guten Morgen,
ich bin Matlab-Neuling und hätte da eine Frage zur Addition von Schleifenwerten eines Vektor.
Ich habe einen etwas längeren Code mit einer Schleife am Anfang von k=1:n. In dieser Schleife werden verschiedene Werte berechnet u.a. a_f. Für a_f ist folglich ein Vektor mit n Zeilen. Jetzt würde ich es gerne schaffen, dass wenn ich a_f in der ersten Runde berechnet habe, in der zweiten, der neue a_f(2) sich aus der Summe von a_f(1) und a_f(2) berechnet. a_f(3) soll dann die Summe von 1-3 sein. Ich möchte allerdings nicht mit sum() eine komplette Summe bilden, sondern wirklich einfach nur zu der vorherigen Zeile den neuen Wert hinzu addieren und diesen in die nächste Zeiel schreiben. Der Startwert von a_f=0.
Also z.B. wenn a_f(1)=0,5 und a_f(2)=0,2, dass dann für a_f(2)=0,7 im Ergebnisvektor steht.
Ich habe das ganze jetzt versucht wie folgt mit einer zweiten Schleife zu lösen. Ich würde aber gerne eine Lösung finden, die ohne eine zweite Schleife funktioniert, da so mein Code sehr verlangsamt wird. Die erste Schleife würde bestehen bleiben, da sie für andere Rechnungen notwendig ist.
Ich freu mich über jede Hilfe! Danke!
VG, Gül
|
|
|
|
|
Gül |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 10:20
Titel: Re
|
 |
|
|
Gül |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 12:27
Titel: Re:
|
 |
cumsum macht leider nicht das, was ich suche, da dort ja immer alle Zeilen addiert werden. Ich möchte aber wirklich nur, dass in der nächsten Zeile die Summe aus der vorherigen Zeile und dem neu berechneten Wert steht.
Jemand eine Idee?
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 13:22
Titel:
|
 |
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 13:30
Titel: Re: Addition möglichst ohne Schleife
|
 |
Hallo Gül,
Das Programm kann in der gezeigten Form nicht langsam laufen, sondern es stoppt mit einem Fehler. "k(k)" ist nicht möglich. Es ist schwer, einen nicht lauffähigen Code zu beschleunigen.
Heißt es innerhalb der Schleife wirklich "a*k(k)*k(k)*dt/(60*24)" oder soll das 2. "k(k)" ein "v(k)" sein? Falls das stimmt, ist der Körper der Schleife über m gar nicht von m abhängig und es könnte so geschrieben werden:
Aber wie gesagt: Das ist geraten.
Gruß, Jan
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 13:38
Titel: Re:
|
 |
Hallo Gül,
cumsum
macht schon das, was Du sagst. Denn auch wenn a_f(k) "nur" von a_f(k-1) abhängen soll, wurde a_f(k-1) vorher schon mit a_f(k-2) berechnet.
Aber wie gesagt läuft Dein Code wegen "k(k)" sowieso nicht und so kann man nicht erraten, was genau Du erreichen möchtest. Bitte pose einen lauffähigen Code.
Hast du den Profiler verwendet um heraus zu finden, wo die meiste Zeit benötigt wird. An sich sind Schleifen nämlich gar nicht schlimm. Wenn die Outputs pre-alloziert sind zumindest. Ist das der Fall?
Gruß, Jan
|
|
|
Gül |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 17:44
Titel: Re:
|
 |
Hallo,
danke für die Antworten.
ja, das war ziemlicher Quatsch, was da stand mit dem k. Hatte die variablen aufgrund der Namenslänge umbenannt und dabei ist wohl etwas schief gegangen.
Also eigentlich war das gemeint:
Habe das Ganze jetzt so gelöst:
VG!
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 14.04.2016, 21:20
Titel:
|
 |
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|