|
|
Rechenintensive for-Schleife / alternativer Code? |
|
LloydBlankfein |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 18.06.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.12.2020, 17:21
Titel: Rechenintensive for-Schleife / alternativer Code?
|
|
Hallo,
folgende for-Schleife wird tausendfach aufgerufen und kostet mehre Stunden Rechenzeit:
Da die Variablen teilweise selbstbeschreibend sind, kommt eine Vektorisierung nicht in Frage. Hat eventuell jemand eine Idee wie ich die Rechenzeit trotzdem verkürzen kann?
Llyod
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.12.2020, 17:39
Titel:
|
|
Hallo,
was ist TT denn überhaupt? Ein Timetable? Ein Struct? Ein Objekt?
Sind die Variablen / Felder / Eigenschaften vorbelegt?
Es kann helfen, mit Vektoren statt den genannten zu arbeiten, um die Zugriffszeiten zu minimieren, also z.B. ModelNAV statt TT.ModelNAV.
Ansonsten sehe ich nur die Möglichkeit der Generierung einer MEX-Datei (mit MATLAB Coder).
Ein reproduzierbares Beispiel macht das ganze (wie immer ) einfacher, denn dann kann ich mir die Nachfragen schenken und meine Vorschläge auch gleich testen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
LloydBlankfein |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 18.06.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.12.2020, 18:18
Titel:
|
|
Hallo Harald,
TT ist ein Timetable, die Werte sind vorbelegt. Das Thema Zugriffszeiten hatte ich nicht auf dem Radar, danke für den Hinweis.
Anbei der vollständige Code sowie das m-File welches der Funktion übergeben werden muss.
Lloyd
Beschreibung: |
|
Download |
Dateiname: |
TT.mat |
Dateigröße: |
160.03 KB |
Heruntergeladen: |
171 mal |
Beschreibung: |
|
Download |
Dateiname: |
NAV.m |
Dateigröße: |
3.78 KB |
Heruntergeladen: |
182 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.12.2020, 18:59
Titel:
|
|
Hallo,
ich hab's mal ausprobiert, und durch Vermeiden der wiederholten Indizierung ist man sehr viel schneller.
Übrigens kannst du einen Timetable auch erweitern mit TT.NewVar = NewData. Das sollte einfacher sein als deine Code-Blöcke mit array2timetable.
Grüße,
Harald
Beschreibung: |
|
Download |
Dateiname: |
NAV2.m |
Dateigröße: |
4.32 KB |
Heruntergeladen: |
187 mal |
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
LloydBlankfein |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 18.06.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.12.2020, 16:29
Titel:
|
|
Vielen Dank Harald! Ich werde meinen Code bzgl. der Indizierungen anpassen.
Der Hinweis "TT.NewVar = NewData" ist ebenfalls nützlich, danke auch hierfür!
|
|
|
|
|
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.
|
|