|
|
| eey |

Forum-Fortgeschrittener
|
 |
Beiträge: 86
|
 |
|
 |
Anmeldedatum: 31.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.04.2012, 10:11
Titel: Mex file für Interp1?
|
 |
Hallo zusammen,
ich arbeite momentan sehr viel mit der interp1 Funktion von Matlab. Leider ist diese relativ langsam für meine Zwecke, daher suche ich nach Möglichkeiten diese zu beschleunigen.
Bei Google habe ich schon diverse Sachen gefunden, aber entweder nur für äquidistante Stützstellen oder nur für lineare Interpolation.
Ich hätte aber gerne eine kubische Spline Interpolation, wie eben in Matlab per interp1(x,Y,xi,'spline'), nur eben schneller. Gibt es dafür ein Mex File, oder sonst eine Möglichkeit?
Über Hilfe würde ich mich sehr freuen
Mit freundlichen Grüßen,
eey
|
|
|
|
|
|
| Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 05.04.2012, 10:44
Titel:
|
 |
Ich kann mir mehrere Möglichkeiten vorstellen den Code zu beschleunigen.
1. Erst mal den Profile laufen lassen um sicher zu stellen, dass der Flaschenhals wirklich dort ist. Aber es hilft auch weiter zu graben. Meistens sind es built-in Funktionen die aufgerufen werden - und die sind kaum zu beschleunigen.
2. Prüfen inwiefern die Anwendung auf die allgemeine Version von INTERP1 verzichten kann. Also, z.B. wenn die Grössen der Übergabewerte immer gleich gross sind, kann man da viele IFs und Zwischenoperationen rauswerfen. Einfach als "myinterp1.m" oder so speichern und modifizieren.
3. Parallel Computing. Bin ich kein Fachmann für, aber die meisten haben die Parallel Computing Toolbox und Mehrprozessormaschinen. Da get viel!
Andreas
|
|
|
|
| eey |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 86
|
 |
|
 |
Anmeldedatum: 31.03.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.04.2012, 13:38
Titel:
|
 |
Hallo Andreas,
danke erstmal für die Antwort. Zunächst erstmal zu den angesprochenen Punkten:
1.) Hab ich getestet und die Interpolation ist leider wirklich der Falschenhals, also der gesamte Code wird dadurch relativ langsam
2.) Übergabewerte sind grundsätzlich vom Benutzer frei wählbar, von daher werde ich da nichts dran drehen können
3.) Das habe ich über kurz oder lang auch vor, aber dennoch will ich bis dahin den Code auch so schon optimiert haben, damit es eben möglichst schnell ist
Unter folgendem Link http://www.mathworks.com/matlabcent.....eexchange/25463-scaletime wird die in C geschrieben Funktion "ScaleTime" angeboten, welche als Mex-File bis zu 400 mal schneller ist als die Matlab Funktion interp1. Leider kann dieses ScaleTime nur lineare Interpolation und keine kubische Spline Interpolation.
Daher suche ich so etwas, das muss es doch auch irgendwo geben, oder?
Schöne Grüße,
eey
|
|
|
|
| Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 05.04.2012, 14:45
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.
|
|