测量反应时间——确保数据的准确性

测量反应时间——确保数据的准确性

我打算编写一个程序来测量反应时间。我还不确定要使用哪种编程语言。该程序将用作心理学实验的一部分。理想情况下,我希望它在 Windows 下运行。

但在真正开始编写程序之前,我希望能够确信最终的反应时间数据能够精确到几毫秒。一位熟人告诉我,在 Windows 下,独立于后台进程(防病毒扫描等)准确计时事件是不可能的。首先,这是真的吗?其次,如果这是真的,我该如何解决这个问题?我使用 Linux 还是......?

答案1

为了保证数据的准确性,您需要一个实时操作系统。默认情况下,Linux 并不比 Windows 好,但 Linux 可以配置具有实时功能的内核(IIRC)。

有关如何编写此类程序的详细信息,我建议您在 stackoverflow.com 上询问。

现在,实际上,在 Windows 下,您也会得到相当准确的结果。进程调度对结果的影响很小。大多数防病毒软件都在用户空间中运行,这意味着它们与您的应用程序处于平等地位。最好的办法是尝试一下。

答案2

专用数据采集硬件可以使测量结果精确到您的预算允许的范围内,与操作系统和语言无关。我最熟悉的是 National Instruments 硬件和软件,但也有其他供应商。

答案3

我认为这不是很成问题我使用了 GFA-basic 看到:https://dl.dropbox.com/u/25791210/gb32.zip

我的(最简单的)程序运行如下:

Dim x, y, z As Integer
Dim ttt, tijd As Double

nogeens:
Print AT(5, 5); "wait"
Print "                    (press 'p' when screen goes black)"
Pause 50
Print AT(5, 5) ; "READY ??  "

Pause 40 + Rnd * 20

ttt = Timer
For y = 1 To 550
  Line 0, y, 1000, y
Next
While InKey$ <> "p"
Wend
tijd = Timer - ttt
Cls

If tijd < .1
  Print "FALSE START",
  Print "Press 'p' just AFTER you have seen the screen blackened  !!"
  Print "press 'q'to try once again"
Else
  Print AT(5, 5); tijd
  Print "press 'q'to try once again"
EndIf

While InKey$ <> "q"
Wend
Cls
GoTo nogeens

相关内容