|
dummy2k |

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 05.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.11.2012, 13:38
Titel: Loop -> Vectorization?
|
 |
Hallo,
ich bin relativ neu in Matlab und hab erst vor kurzem einen Trick, sprich Vectorization, kennengelernt, wie man Berechnungen bzw. Loops umgehen kann.
Nun bin ich bei einer Schleife angelangt, wo ich keine Idee hätte wie man das verbessern oder gar den Loop auflösen könnte. Hat jmd vielleicht eine Idee oder kann man das nur in ner Schleife lösen? Danke!
|
|
|
|
|
MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 23.11.2012, 16:59
Titel:
|
 |
Hallo,
kann man sicherlich, aber warum sollte man das tun?
Grüße, Marc
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.11.2012, 22:14
Titel: Re: Loop -> Vectorization?
|
 |
Hallo dummy2k,
Vektorisieren kann eine Menge Rechenzeit sparen, muss aber nicht. Deswegen ist eine gute Programmier-Paxis, eine Schleifen und eine vektorisierte Version zu programmieren und die Ergebnisse zu vergleichen. Wenn die Ergebnisse gleich sind, ist das ein gewisser Hinweis darauf, dass vielleicht kein Fehler im Code steckt. Wenn ein winziger Unterschied zu finden ist, ist der Algorithmus eventuell anfällig für Rundungsfehler. Wenn sich die Ergebnisse unterscheiden, hat man einen Bug zu finden.
Aber im Fall Deines Code-Stücks sehe ich keine Möglichkeit für eine Vektorisierung, da die Werte für jede Iteration von vorhergehenden Wert abhängen. Dies ist zwar auch mit CUMSUM und CUMPROD im Prinzip vektorisierbar, aber nicht für Bit-Shift-ing und Or-ing.
Siehe auch http://www.gomatlab.de/faq-performa.....ektorisierung-t19996.html.
Gruß, Jan
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.11.2012, 22:54
Titel: Re: Loop -> Vectorization?
|
 |
Zwar nicht vektorisiert, aber optimiert
Resultat ist das gleiche.
und vektorisiert:
oder
|
|
|
dummy2k |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 05.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2012, 14:23
Titel:
|
 |
Vielen Dank ihr 2 für die Antworten! Ich weiß das wirklich zu schätzen und hoffe eines Tages mich revanchieren zu können
@dmjr
wow, diese Lösung ist wirklich genial, thx! Auch wenn mir momentan nicht ganz klar ist, wie du das mit "bitor" gelöst hast. Das muß ich mir noch genauer ansehen. Ich hoffe du bist dann nachher noch verfügbar, falls noch Fragen auftauchen
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2012, 14:27
Titel:
|
 |
Du musst den Integer mal Array von Bytes betrachten, dann merkst du dass jeweils nur an dem letzen gearbeitet wird und der Rest nur Geshiftet wird. Entweder das eine oder das andere Byte ist 0. Unter der Voraussetzung ist Bitor und Addition identisch.
|
|
|
dummy2k |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 05.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.11.2012, 16:48
Titel:
|
 |
dmjr hat Folgendes geschrieben: |
Du musst den Integer mal Array von Bytes betrachten, dann merkst du dass jeweils nur an dem letzen gearbeitet wird und der Rest nur Geshiftet wird. Entweder das eine oder das andere Byte ist 0. Unter der Voraussetzung ist Bitor und Addition identisch. |
Sorry, leider kann ich nicht nachvollziehen, weshalb du das Bitor weglassen kannst. Wenn du vielleicht Zeit und Lust hast, kannst du das vielleicht so erklären, dass es jmd versteht, der nicht so viel Grundlagenwissen hat?
Aber ich poste mal den eigentlich Code, ich erwarte natürlich keine Lösung, aber denkst du das es grundsätzlich möglich ist, das ebenfalls zu vektorisieren?
Tausend Dank falls du dir Mühe machst, aber wenn nicht, versteh ich das auch
|
|
|
|
|
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.
|
|