Verfasst am: 24.11.2011, 11:08
Titel: Vektorabschnitte bearbeiten ohne Schleife
Guten Tag allerseits!
Heute habe ich folgendes Problem ^^
Ich habe einen Geschwindigkeits-, einen Koordinaten- und einen Zeitvektor. (Alles Zeilenvektoren der gleichen Länge.)
Im Geschwindigkeitsvektor möchte ich ab einer definierten Stelle
1. eine größere Anzahl von Zeilen überspringen und
2. das Minimum um den Ist-Punkt finden.
3. Soll die Koordinate des Minimums gespeichert werden
4. Soll die vergangene Zeit vom Minimum bis 2 Zeilen weiter ermittelt werden.
5. Soll daraus die Beschleunigung ermittelt werden
Das Ganze (1. bis 5.) soll solange wiederholt werden, bis der Vektor zuende ist.
Am Ende werden Durchschnittswerte berechnet.
Im Moment behelfe ich mir mit einer Schleife. Dies ist allerdings keine Option, da viel zu zeitaufwendig.
Mein Problem ist etwas umfangreicher und der Code ist hier vereinfacht. Es können also kleine Fehler vorhanden sein.
Gibt es eine schleifenlose Lösung für dieses Problem?
Erledigt. Du kannst den Titel aber auch selber editieren, Jan S
Verfasst am: 24.11.2011, 11:56
Titel: Re: Vektorabschnitte bearbeiten ohne Schleife
Hallo Ferp,
Was bedeutet eigentlich "^^"?
Es ist nahezu unmöglich vereinfachten Copde zu optimieren. Dabei gehen im Allgemeinen die ausgelassenen Details vollkommen unter.
Eine Lösung ohne Schleife ist nicght generell schneller. Es wäre deshalb unbedingt notwendig herauszubekommen, wieso die Schleifen-Lösung langsam ist. Sind alle Outputs hinreichend pre-allociert? Wurden alle wiederholten Berechnungen aus der Schleife herausgezogen oder zumindest in temporäre Variablen geschrieben (z.B. "min-4 + y*30" sollte nicht mehrfach berechnet werden)?
Dies sieht so aus, als würdest Du "min" als Variable und als Funktion benutzen. Das geht nicht.
Wenn man einen vektor als Spaltenvektor definiert hat, ist "x(index,1)" übrigens langsamer als "x(index)".
^^ <-- soll ein Schmunzeln (der Augenpartie) darsetellen.. Vllt ist es so besser erkennbar:
^_^
Ich benutze im Originalcode min nicht als Variable. Ich probiere erstmal, deinen Vorschlag, (index,1) durch (index) zu ersetzen.
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
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.