|
|
Idee um Code zu beschleunigen |
|
chill |

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.07.2012, 19:53
Titel: Idee um Code zu beschleunigen
|
 |
Hallo Zusammen,
in meinem Programm nimmt diese Funktion während einer Simulation leider sehr viel Zeit in Anspruch. Die Funktion soll von einem übergebenen Vektor rollierend das Minimum finden. Nicht mehr und nicht weniger.
Laut profile wurde auch diese Funktion als klar zeitaufwendigste identifiziert. (80 %)
Hauptsächlich "schuld" für den Zeitaufwand ist wohl die min Funktion... Alternativ sort und dann den ersten Eintrag wählen führt dazu, dass das Programm noch langsamer wird
Hab Ihr eine gute Idee um die Berechnung zu beschleunigen?
Ich wäre euch sehr dankbar...
ciao chill
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.07.2012, 22:08
Titel:
|
 |
Hallo,
um hier helfen zu können, müsste man wissen, wieviele Elemente der Vektor typischerweise hat und über wieviele Elemente typischerweise gemittelt wird.
Grüße,
Harald
|
|
|
chill |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.07.2012, 10:07
Titel:
|
 |
Hi,
der Vektor ist in der Simulation 600x1 gross, rollierend wird das Minimum über 100 Einträge bestimmt.
1. Rechnung: Minimum der Werte des Vektors 1:100
.
. ... 400x
.
Letzte Rechnung: Minimum der Werte des Vektors 401:600
Bereits eine Idee wie ich die Min-beschleunigen könnte?
VG Chill
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.07.2012, 10:57
Titel:
|
 |
Hallo,
auf meinem Rechner braucht diese Funktion nur ca. 0,0014s. Wird diese Funktion wiederum sehr oft aufgerufen, oder warum ist das für dich relevant?
Ich habe mich mal noch daran gespielt und bekomme das noch etwas runter:
Dann bin ich bei 0,0006s.
Ansonsten auch mal bei File Exchange schauen:
http://www.mathworks.com/matlabcent.....hange/24705-minmax-filter
Grüße,
Harald
|
|
|
chill |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.07.2012, 16:29
Titel:
|
 |
HI Harald,
vielen Dank, das beschleunigt meinen Code schon mal um mehr als 40%...
Super!
Genau wie Du vermutest benutze ich die Funktion sehr oft, also normalerweise dauert eine Simulation für einen Beobachtungsraum ca. 2,5 Std. in der hauptsächliche die Minfunktion aufgerufen wird.
Da ich gerne über 100 Beobachtungsräume simulieren möchte....
2,5*100/24 bin ich bei über 10 Tagen... wenn alles "Glatt läuft" wäre ich jetzt "nur" noch bei 6 Tagen.
ciao
Chill
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.07.2012, 17:04
Titel:
|
 |
Hallo,
an der Stelle wäre dann auch Parallelisierung eine Überlegung wert.
Die einfachste Möglichkeit dazu wäre, die 100 Beobachtungsräume in einer for-Schleife zu simulieren und diese dann in eine parfor-Schleife umzuwandeln.
Ich würde in jedem Fall auch die Funktion aus File Exchange ausprobieren.
Grüße,
Harald
|
|
|
chill |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.07.2012, 21:23
Titel:
|
 |
Hi,
also ich hab schon einiges mit Matlab angestellt, aber mit mex hatte ich bisher noch nie was zu tun, leider bekomme ich das tool minmaxfilter nicht zum laufen
skuriel, obwohl die Installation eigentlich funktionierte...
Help
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 28.07.2012, 22:31
Titel:
|
 |
Hallo,
ich kenne das Programm nicht. Im Zweifel würde ich also beim Autor des Programms nachfragen.
Beim Öffnen der .m-Datei sollte jedoch klar werden, wo das Problem liegt: das ist nur eine Hilfsdatei, die die Doku enthält. Man sollte die entsprechenden .c-Dateien mit mex kompilieren. Dann hat die mex-Datei Vorrang gegenüber der .m-Datei.
Grüße,
Harald
|
|
|
chill |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.07.2012, 09:03
Titel:
|
 |
Heute morgen läuft es, obwohl ich keinen Neustart oder sonstiges gemacht habe.
gut wenn man mal drüber "schläft"
später mal einbauen und dann schauen ob es schneller ist
ciao
Chill
|
|
|
chill |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.07.2012, 16:46
Titel:
|
 |
ok, irgendwas hab ich an Matlab <-> Mex nicht ganz verstanden,
nach der Installation der Mex-Dateien, funktioniert es, soweit ich in dem Ordner bin wo alle Dateien (aus dem auch installiert wurde) liegen.
Da ich diesen Ordner bei Matlab mit "set path" hinzugenommen habe, sollte dies doch dann von "überall" ausführbar sein!?!?
Ich bekomme, sofern ich in einem anderen Ordner die Funktion aufrufe, dann aber folgende Fehlermeldung:
mir ist nicht klar, was Matlab mir hier mitteilen möchte
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.07.2012, 18:01
Titel:
|
 |
Hallo,
das Problem hatte ich an sich schon beschrieben. Die mex-Datei wurde entweder nicht erzeugt oder wird durch etwas anderes überlagert.
Kann es sein, dass das Verzeichnis, in dem du das installiert hast, ein anderes als C:\Program Files\MATLAB\R2012a\toolbox\minmaxfilterfolder ist, beide Verzeichnisse auf dem Suchpfad liegen, das letztgenannte Verzeichnis im Suchpfad vor dem anderen liegt?
Falls ja: C:\Program Files\MATLAB\R2012a\toolbox\minmaxfilterfolder vom Suchpfad nehmen oder nach unten verschieben.
Grüße,
Harald
|
|
|
chill |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 26.07.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.07.2012, 20:02
Titel:
|
 |
Die Lösung ist etwas "komisch"
indem ich den eingetragenen Ordner bei "set path" nach ganz unten gesetzt habe... läuft es nun
ciao
Chill
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.07.2012, 21:45
Titel:
|
 |
Hallo,
als "komisch" würde ich die Lösung nicht bezeichnen.
Das Problem war schlicht und einfach, dass die falsche lemire_nd_minengine.* die höchste Priorität hatte. Und dieses Problem hast du durch das Verschieben im Suchpfad gelöst.
Grüße,
Harald
|
|
|
|
|
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.
|
|