|
|
For Schleife unterschiedliche Rechenzeit |
|
Piddy4 |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 12:06
Titel: For Schleife unterschiedliche Rechenzeit
|
 |
Hallo Leute,
Ich haBe R2015a eine Art "Reaktionstest" geschrieben.
Mein Problem ist nun, dass wenn ich das identische Programm mehrmals nacheinander laufen lasse, unterschiedliche Zeiten zwischen t0 und t1 erhalte.
Zwar sind die Unterschiede nur Zehntel Sekunden, bei einem Reaktionstest allerdings ist das eine erhebliche Verfälschung der Ergebnisse.
Während der Rechnungen ist noch Rechenlapazität offen (CPU-Auslastung < 70%).
Weis jemand, wodurch die unterschiedlichen Rechenzeiten zustande kommen?
Viel Dank schonmal
Piddy4
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 12:10
Titel:
|
 |
jita; sachen die windows im hintergrund noch so macht; giebt da viele möglichkeiten.
_________________
richtig Fragen
|
|
|
Piddy4 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 17:11
Titel:
|
 |
OK. Und was kann ich dagegen tun, bzw. welche Alternativen habe ich um in MATLAB einen Reaktionstest zu erstellen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 17:30
Titel:
|
 |
Hallo,
eine Möglichkeit: wiederholt laufen lassen und die Zeiten mitteln.
Siehe auch
timeit
.
Wessen Reaktion soll denn überhaupt getestet werden? Die von MATLAB? Die des Nutzers?
Grüße,
Harald
|
|
|
Piddy4 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 17:51
Titel:
|
 |
Die Reaktion des Nutzers soll ermittelt werden.
Das Problem bei den gemittelten Werten ist die Streuung, sodass der Nutzer laut gemittelter Zeit zu spät gedrückt hat, obwohl er in diesem spezifischen Versuch noch im Tolleranzbereich war.
Zur Erklärung: Zwischen der ersten und zweiten if-Bedingung im Beispiel muss der Nutzer einen Pushbutton drücken.
Ich kann mir nur schwer vorstellen, dass aufgrund von Windowshintergrundtätigkeiten die Schleifenrechnung in MATLAB länger dauert, obwohl noch viel Rechenleistung des Computers ungenutzt ist.
Danke
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 21:25
Titel:
|
 |
Hallo,
neben diesem Effekt tritt auch noch der auf, dass der Code beim ersten Durchlauf in den Speicher geladen werden muss, beim zweiten Durchlauf aber schon im Speicher ist. Ich würde also zumindest mal einen "Leerdurchlauf" machen.
Wie lange ist denn die Gesamtlaufzeit des Codes? Bei 0,1s kommt mir 0,1s mehr oder weniger relativ viel vor, bei 10s fände ich das ganz normal.
Zitat: |
Ich kann mir nur schwer vorstellen, dass aufgrund von Windowshintergrundtätigkeiten die Schleifenrechnung in MATLAB länger dauert, obwohl noch viel Rechenleistung des Computers ungenutzt ist. |
Das Betriebssystem muss ja die Rechenleistung auch erst wieder dem anderen Prozess zuordnen. Auch das dauert.
Grüße,
Harald
|
|
|
Piddy4 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 21:41
Titel:
|
 |
Der gesamte Code dauert so 25-30s.
Es sind insgesamt 450 Durchläufe der Schleife. Zwischen dem 100. und 150. Durchlauf finden die Aktionen statt.
Was genau meinst du mit "Leerdurchlauf"?
Ich habe heute noch ein paar Tests gemacht und dabei war sogar einmal der erste Durchlauf schneller als der zweite.
Danke für deine Hilfe
LG Piddy4
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 22:10
Titel:
|
 |
Hallo,
Zitat: |
Was genau meinst du mit "Leerdurchlauf"? |
Einen Durchlauf, der nicht für die Zeitmessung berücksichtigt wird.
Zitat: |
Der gesamte Code dauert so 25-30s.
Es sind insgesamt 450 Durchläufe der Schleife. Zwischen dem 100. und 150. Durchlauf finden die Aktionen statt. |
Und die Schwankungen von Zehntelsekunden sind nun auf die Laufzeit von 25-30s bezogen? Das ist nun wirklich nicht viel.
Grüße,
Harald
|
|
|
Piddy4 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 22:26
Titel:
|
 |
Nein. Das Zehntel ist auf die Dauer vom 100. bis zum 130. Durchlauf bezogen. Diese 30 Loops dauern so 2.4 bis 2.7 Sekunden.
Das Reaktionsintervall liegt also in diesem Bereich.
Nun fällt es mir schwer zu sagen, dass der Proband 0.7s nach der ersten bzw. 2s vor der zweiten Aktion den Pushbutton betätig hat, da die Dauer nicht immer 2.7s beträgt.
Grüße Piddy4
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 22:37
Titel:
|
 |
Hallo,
du kannst doch die einzelnen Zeiten getrennt stoppen?
Grüße,
Harald
|
|
|
Piddy4 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 13.01.2016, 22:56
Titel:
|
 |
Ja, nur kann ich sie dann nicht wirklich miteinander vergleichen.
Angenommen zwei Probanden dücken bei dem 110. Loop den Pushbutton, so haben sie eigentlich das gleiche Ergebnis, aber unterschiedliche Zeiten.
Danke
Lg piddy4
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 10:12
Titel:
|
 |
Piddy4 hat Folgendes geschrieben: |
Ja, nur kann ich sie dann nicht wirklich miteinander vergleichen.
Angenommen zwei Probanden dücken bei dem 110. Loop den Pushbutton, so haben sie eigentlich das gleiche Ergebnis, aber unterschiedliche Zeiten.
Danke
Lg piddy4 |
Dann speicher doch nicht die Zeit, sondern (zusätzlich) den aktuellen Schleifenzähler und vergleiche diesen Quantitativ?
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Piddy4 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 03.12.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 10:54
Titel:
|
 |
Danke, das wäre auch meine letzte Möglichkeit.
Ich habe gehofft, dass jemand ähnliche Probleme hatte und diese beseitigen konnte (wie z.B die Unterbindung sämtlicher Hintergrundaktivitäten oder einer anderen Schleifenmöglichkeit)
P.S. Ich habe auch schon einen While Loop versucht und dieser hat ähnliche Abweichungen.
Danke für eure Hilfe!
LG Piddy4
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 11:19
Titel:
|
 |
Hallo,
Zitat: |
wie z.B die Unterbindung sämtlicher Hintergrundaktivitäten |
Wenn es dir gelingen sollte, das auf Windows zu schaffen, sag bitte Bescheid :D
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.
|
|