WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zeitkritischer Code -> MATLAB zu langsam.

 

pusht
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 13.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2009, 12:10     Titel: Zeitkritischer Code -> MATLAB zu langsam.
  Antworten mit Zitat      
Hallo,

Ich habe eine Funktion, die 100 mal (=> 1 Periode = 10ms) in der Sekunde mittels Timer aufgerufen wird. Diese Funktion ist gegeben und kann nicht verändert werden.

Ich habe die durchschnittliche Timer-Periodendauer ausgerechnet, sie liegt bei ca. 35ms, damit 25ms zu lang für mein Vorhaben.

Ich suche nun Wege, meinen 100-Hertz-Plan ein zu halten.
Ich könnte die Frequenz zwar niedriger machen, aber dies würde die Qualität des Programms erheblich senken.

Wie kann ich mehr Performance rausholen, ohne die Timer-Funktion selbst zu verändern. (Darum werde ich mich kümmern, wenn ich erst absolut sicher bin, den richtigen Rahmen gewählt zu haben. Die Funktion zu editieren ist Detailwork; bitte nicht sagen 'wir müssen die funktion kennen', darum geht es hier garnicht.)

Ich suche lediglich eine Grundstrategie. Wie kann man neben laufender GUI eine hochfrequente, rechenintensive 'Schleife' realisieren?

Der Timer scheint ja MATLAB-intern nen eigenen Thread zu haben, damit hat man Multithreading, die GUI wird nicht blockiert. Ist der Timer aber die richtige Wahl für mein Vorhaben oder gibt es schnellere Wege so ne Schleife mit vorgegebener Frequenz ablaufen zu lassen?

FALLS der Timer NICHT die richtige Wahl ist, muss ich ja einen Weg finden ohne Timer multithreading zu realisieren. Wie ginge das?

FALLS der Timer DOCH der richtige Weg ist, gibt es eine Möglichkeit, durch Anpassung des Programmrahmens (Grundaufbau) Performance zu gewinnen? Gewisse Tricks etc?


Vielen Dank.
Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 29.09.2009, 12:50     Titel:
  Antworten mit Zitat      
Hallo,

eine 100% Antwort habe ich nicht. Nur soviel: Timer ist der richtige Weg, würde ich genauso machen. Hast Du mal probiert, die Schleife einfach permanent laufen zu lassen, um zu sehen, ob der Thread-Overhead des Timers verantwortlich ist, oder der Code selber? Ich vermute letzteres, aber einen Versuch wäre es wert. Wenn es der Code selber ist, wird man um dessen Modifikation nicht herumkommen, wenn es der Timer sein sollte, kann man nochmal über die Konstruktion nachdenken ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.