|
chemichem |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 27.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2019, 12:12
Titel: Daten aus Stream lesen
|
|
|
|
|
Hallo, komme bei meinem MATLAB-Code nicht weiter und würde euch gerne um Rat fragen:
Ich möchte aus einem Datenstream für Eye-Tracking bestimmte Werte auslesen. Da ich nur für bestimmte Messabschnitte die Werte betrachte (bestimmte Versuchsblöcke) wurde der Stream erstmal nur in den Versuchsblöcken "(block_names)"betrachtet. Das Beispiel ist ein Pupillendurchmesser des linken Auges. Durch die find funktion habe ich mir alle nonzero elemente ausgegeben lassen für die jeweiligen Blöcke und kann dafür z.b. den "mean" berechnen. So werden aus 50.000 Messpunkten durch die bestimmten Messpunkte nur noch 10.000.
Die Messpunkte springen bei einem Blinzeln des Auges auf den Wert "0" und bleiben dort, bis das Auge wieder aufgeht; es gibt also mehrere Punkte die gleich 0 sind für einen kurzen Moment. Springen somit also sehr oft auf "0" und dann schnell wieder zurück. Die Funktion "find" gibt ja nun alle nonzero elemente aus. Ich benötige jetzt eine Funktion, womit ich zählen, kann wie oft geblinzelt wurde. Das bedeutet, ich will für jeden Block einen Zähler haben, wie oft der Wert auf "0" geht. Hierbei fehlt mir noch der Ansatz, da der Zähler ja nur einmal die "0" zählen soll und nicht die ganzen Punkte auf der X-Achse=0.
Hat jemand eine Idee, wie man so eine Funktion aufstellen kann?
[Ich dachte an sowas wie die Funktion bei Wert=0,1 zählen lassen und dann durch 2 teilen (da der Wert pro Blinzeln ja 2 mal die 0,1 passieren muss)] Leider fehlt mir dafür das wissen, nach dieser Funktion umzustellen, habe den roten Matlab-Code "blink-counter" mal angefangen, aber das stimmt so nicht...
Vielen Dank für eure Hilfe..
pupil_left = s{eyetrackingStreamID}.time_series(7,: );
for i_block = 1:length(block_names)
pupil_left_this_block =...
pupil_left(find(s{eyetrackingStreamID}.time_stamps>=blocks_start_end(i_block,1),1,'first'):...
find(s{eyetrackingStreamID}.time_stamps<=blocks_start_end(i_block,2),1,'last'));
blocks_pupil_left(i_block,: ) = mean(pupil_left_this_block);
blink_counter=pupil_left(find(~s{eyetrackingStreamID}.time_stamps>=blocks_start_end(i_block,1)):...
find(~s{eyetrackingStreamID}.time_stamps<=blocks_start_end(i_block,2)));
end
https://imgur.com/w6pqKya
https://imgur.com/0XS592H
|
|
|
|
|
sijuherm |
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 01.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2019, 10:47
Titel:
|
|
Wenn es dir nur um dir nur auf die Anzahl der Blinzelvorgänge ankommt, geht das deutlich einfacher:
1. Bestimme alle Zeitpunkte, an denen das Auge geschlossen ist.
2. Bestimme die Differenz zwischen diesen Zeitpunkten
3. Entferne alle Einträge, die direkt aufeinander folgen (= das Auge war zwischendurch nicht wieder offen)
4. Zähle die verbleibenden Einträge und addiere 1 (der diff-Funktion geschuldet)
|
|
|
|
|
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.
|
|