心理應用工具包 psychtoolbox 繪制小球走迷宮

psychtoolbox 是 MATLAB 中的一個工具包,對于科研人員設計實驗范式來說是不二之選,因為它可以操作計算機的底層硬件,精度可以達到幀的級別。


文章目錄

  • 一、實驗目的
  • 二、psychtoolbox 的下載安裝
  • 三、Psychtoolbox 的基本使用
  • 四、完整代碼

一、實驗目的

我們的目的是設計出一個迷宮(網格線上的一條路徑),使得小球每隔3s就移動一格,當然每次小球移動的對錯概率都是我們自己實現設定好的。
在這里插入圖片描述

二、psychtoolbox 的下載安裝

  1. 首先在BING搜索,認準第一個org結尾的官網,可以進入官網,也可以直接點擊下方的“Download”,跳轉到下載界面。
    在這里插入圖片描述
  2. 進入到下載界面后,按照下圖中的三個步驟(第一步可不做,如果是第一次安裝)。
    在這里插入圖片描述

(1)下面是第二步,點擊這里可下載gstreamer,按照指引一步步安裝即可。在這里插入圖片描述
(2)下載zip,將壓縮包的子文件夾里的所有文件都拖入到一個新建的“toolbox”文件夾里。
在這里插入圖片描述

處理完之后像下圖一樣就對了。在這里插入圖片描述

  1. 進入MATLAB,打開到剛才的toolbox->Psychtoolbox 路徑。
    在這里插入圖片描述
  2. 在命令行中輸入 SetupPsychtoolbox ,回車,等待即可,中間需要一路回車進行。最后出現“Success,Enjoy”等字樣即安裝成功。可以繼續在命令行使用 Screen來測試是否安裝成功。

三、Psychtoolbox 的基本使用

  1. 基本原理
    首先它是通過一幀一幀翻轉窗口來實現所謂的動態效果,所以我們的邏輯基本就是先在畫布上繪制下一幀的畫面,然后翻轉。
    可以自行到官網找到參考文檔,網絡上所有文章基本都是從那里復制出來的,并且還可以看到官網提供的Demos。在這里插入圖片描述

  2. 這里提供幾個常使用到的函數:

/* 開頭需要加的。 */
Screen('Preference', 'SkipSyncTests', 1);
Screen('Preference','SkipSyncTests',2);/* 隱藏鼠標。 */
HideCursor;/* 函數功能:新建一個窗口。* 返回值:w,窗口的句柄;* 返回值:wrect,主要用來獲取屏幕的長寬。* 參數:命令,可在命令行“help Screen”獲取幫助文檔或者直接到官網。* 參數:第n個屏幕,一般無擴展屏的話直接默認0.* 參數:顏色,窗口的RGB數組。這里是黑色。*/
[w, wrect] = Screen('OpenWindow', 0, [0, 0, 0]);/* 寫文本。一般進行心理實驗之前需要一段引導語。* 參數:imread后面為圖片的路徑。*/
instruction=Screen('MakeTexture',w,imread('xxx\xxx\xx.tif'));
Screen('DrawTexture',w,instruction,[]);%顯示提示語/* 函數功能:畫直線。* 返回值:無* 參數:命令,畫直線、畫圓等等。* 參數:窗口的句柄,按之前來講就是w。* 參數:顏色。* 參數:后面四個參數依次為x軸起點坐標、y軸起點坐標、x軸終點坐標、y軸終點坐標。* 參數:線寬。*/
Screen(‘DrawLine’, windowPtr [,color], fromH, fromV, toH, toV [,penWidth]);/* 函數功能:畫實心圓。* 返回值:無* 參數:命令。* 參數:窗口的句柄。* 參數:顏色。* 參數:后面四個參數依次為圓的左、上、右、下邊界坐標。*/
Screen(‘FillOval’, windowPtr [,color] [,rect] [,perfectUpToMaxDiameter]);/* 翻轉。每次繪制完畫布都要進行一次翻轉,這樣新繪制的場景才能顯示出來。重要!!! */
Screen('Flip',w)/* 延時函數,單位:秒。*/
WaitSecs();/* 按鍵檢測。以下是一個退出機制,按下Esc鍵退出。27對應Esc鍵的ASCII值。*/
while true[keyIsDown,~,keyCode]=KbCheck;if keyCode(27)break;end
end/* 關閉窗口,搭配上面的退出機制使用。*/
Screen('CloseAll');/* 常用的顏色RGB值。*/
color_red = [255,0,0];
color_white = [255, 255, 255];
color_black = [0, 0, 0];
color_yellow = [255, 255, 0];

四、完整代碼

  1. 功能邏輯通過一個哈希表來一一映射小球每一步的正確、錯誤情況。
decision_hashmap = zeros(1, 100);
decision_hashmap(1, [3,7,13,18,23,27,32,37,  42,46,50,  54,58,  63,67,  72,76,  79,  83]) = 1; % 第i個元素置一表示第i步為小球錯誤運動方向  
step_up_right = 8 + 2 * 2; % 由up轉向right的第x步step_right_down = step_up_right + 8 + 2 * 3;step_down_left = step_right_down + 8 + 2 * 3;step_left_up = step_down_left + 6 + 2 * 3;step_up_right_2 = step_left_up + 6 + 2 * 2;step_right_down_2 = step_up_right_2 + 4 + 2 * 2;step_down_left_2 = step_right_down_2 + 4 + 2 * 2;step_left_up_2 = step_down_left_2 + 2 + 2 * 1; step_up_end = step_left_up_2 + 2 + 2 * 1;

在for循環里實現小球的轉向和正誤判斷,下面只張貼正確情況的轉向邏輯代碼,完整代碼可移步gitee倉庫Psychtoolbox繪制小球走迷宮下載。

for step = 1 : step_up_end% 通過中間變量,記錄上一步小球的位置if(step == 1)previous_y_index_up = xy_4_trace_start(2);previous_y_index_down = xy_4_trace_start(4);previous_x_index_left = xy_4_trace_start(1);previous_x_index_right = xy_4_trace_start(3);elseprevious_y_index_up = current_y_index_up;previous_y_index_down = current_y_index_down;previous_x_index_left = current_x_index_left;previous_x_index_right = current_x_index_right;end% 小球動態路徑if ~decision_hashmap(step) % 正確if step <= step_up_right current_y_index_up    = previous_y_index_up - length_chessboard;current_y_index_down  = previous_y_index_down - length_chessboard;current_x_index_left  = previous_x_index_left;current_x_index_right = previous_x_index_right;Screen('FillOval', w, color_ball, [current_x_index_left current_y_index_up ...current_x_index_right current_y_index_down]);elseif step <= step_right_down current_y_index_up    = previous_y_index_up   ;current_y_index_down  = previous_y_index_down ;current_x_index_left  = previous_x_index_left  + length_chessboard;current_x_index_right = previous_x_index_right + length_chessboard;Screen('FillOval', w, color_ball, [current_x_index_left current_y_index_up ...current_x_index_right current_y_index_down]);...
end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10689.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10689.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10689.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

不同數據類型的內部秘密----編程內幕(2)

Q&#xff1a; char類型是如何被當成int處理的&#xff1f; A: 我們可以看看char類型變量在何時才會被當做int處理. #include <stdio.h>int main() {char ch;ch a;printf("%c\n", ch);return 0; } 匯編代碼如下&#xff1a; hellomain:0x100000f60 <0&…

修改了環境變量~/.bashrc后 報錯 命令 “dirname” 可在以下位置找到 * /bin/dirname * /usr/bin/dirname

問題如下&#xff1a; 修改了~/.bashrc后加入了環境變量之后報錯&#xff0c;如下所示 (base) jiedell:~/桌面$ source ~/.bashrc 命令 “dirname” 可在以下位置找到 * /bin/dirname * /usr/bin/dirname 由于 /usr/bin:/bin 不在 PATH 環境變量中&#xff0c;故無法找到該…

在Linux上安裝并啟動Redis

目錄 安裝gcc環境 上傳redis文件方法一&#xff1a;sftp 上傳redis文件方法二&#xff1a;wget 啟動redis-server ctrlc關閉redis-server 參考文章&#xff1a;Linux 安裝 Redis 及踩坑 - 敲代碼的阿磊 - 博客園 (cnblogs.com) 準備&#xff1a;打開VMware Workstation&am…

pair對組創建

創建方式1: pair<type,type> p(value1,value2); pair<string, int> p("Tom", 20); cout << "name:" << p.first << "age:" << p.second << endl; 創建方式2: pair<type,type> pmake_pair(v…

mysql權限分類

USAGE --無權限,只有登錄數據庫,只可以使用test或test_*數據庫 ALL --所有權限 select/update/delete/super/slave/reload --指定的權限 with grant option --允許把自己的權限授予其它用戶(此用戶擁有建立賬號的權限) 權限級別&#xff1a; 1、. &#xff0d;&#xff0d;全…

C語法:for循環執行順序

今天下編寫代碼時遇到了如下情況&#xff1a;期望是輸出 i1,j2 i1,j3 i1,j4 i2,j3 int main(void) {int i,j;for(i1;i<3;i){for(j1;j!i&&j<4;j){printf("i%d,j%d\n",i,j);}}return 0; }實際輸出結果&#xff1a; i2,j1 分析上述代碼&#xff1a…

商務分析方法與工具(九):Python的趣味快捷-Pandas處理公司財務數據集思路

Tips&#xff1a;"分享是快樂的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不僅有知識的海洋&#x1f30a;&#xff0c;還有滿滿的正能量加持&#x1f4aa;&#xff0c;快來和我一起分享這份快樂吧&#x1f60a;&#xff01; 喜歡我的博客的話&#xff0c;記得…

LangChain:大模型框架的深度解析與應用探索

在數字化的時代浪潮中&#xff0c;人工智能技術正以前所未有的速度蓬勃發展&#xff0c;而大模型作為其中的翹楚&#xff0c;以生成式對話技術逐漸成為推動行業乃至整個社會進步的核心力量。再往近一點來說&#xff0c;在公司&#xff0c;不少產品都戴上了人工智能的帽子&#…

初識C語言——第十八天

循環while/do while while 語法結構 while(表達式) 循環語句; break:在while循環中&#xff0c;break用于永久的終止循環 continue:在while循環中&#xff0c;continue的作用是跳過本次循環continue后面的代碼 直接去判斷部分&#xff0c;看是否進行下一次循環。 注意事項…

Logstash詳解

Logstash詳解&#xff1a;構建強大日志收集與處理管道的利器 一、引言 在大數據和云計算的時代&#xff0c;日志數據作為企業運營和故障排查的重要依據&#xff0c;其收集、處理和分析能力顯得尤為重要。Logstash&#xff0c;作為一款強大的日志收集、處理和轉發工具&#xf…

[AI OpenAI-doc] 安全最佳實踐

使用我們的免費 Moderation API OpenAI 的 Moderation API 是免費使用的&#xff0c;可以幫助減少您完成中不安全內容的頻率。或者&#xff0c;您可能希望開發自己的內容過濾系統&#xff0c;以適應您的使用情況。 對抗性測試 我們建議對您的應用進行“紅隊測試”&#xff0…

即插即用篇 | YOLOv8引入軸向注意力 Axial Attention | 多維變換器中的軸向注意力

本改進已集成到 YOLOv8-Magic 框架。 我們提出了Axial Transformers,這是一個基于自注意力的自回歸模型,用于圖像和其他組織為高維張量的數據。現有的自回歸模型要么因高維數據的計算資源需求過大而受到限制,要么為了減少資源需求而在分布表達性或實現的便捷性上做出妥協。相…

解決wangEditor使用keep-alive緩存后,調用editor.cmd.do()失敗

前提&#xff1a;wangeditor版本&#xff1a;4.7.11 vue版本&#xff1a;vue2 問題&#xff1a;在使用wangeditor富文本編輯器時&#xff0c;需求需要通過點擊一個按鈕&#xff0c;手動插入定義好的內容&#xff0c;所以使用了 editor.cmd.do(insertHTML, ....) 方法新增…

青少年軟件編程(Python)等級考試試卷(二級)2024年3月

2024.03電子學會青少年軟件編程 Python二級 等級考試試卷 一、單選題 1.期末考試結束了&#xff0c;全班的語文成績都儲存在列表score 中&#xff0c;班主任老師請小明找到全班最高分&#xff0c;小明準備用Python 來完成&#xff0c;以下哪個選項&#xff0c;可以獲取最高分…

較難題 鏈表的回文結構

本題來自鏈表的回文結構_牛客題霸_牛客網 (nowcoder.com) 234. 回文鏈表 - 力扣&#xff08;LeetCode&#xff09; 題面&#xff1a; 對于一個鏈表&#xff0c;請設計一個時間復雜度為O(n),額外空間復雜度為O(1)的算法&#xff0c;判斷其是否為回文結構。 給定一個鏈表的頭…

03.Linux文件操作

1.操作系統與Linux io框架 1.1 io與操作系統 1.1.1 io概念 io 描述的是硬件設備之間的數據交互&#xff0c;分為輸? (input) 與輸出 (output)。 輸?&#xff1a;應?程序從其他設備獲取數據 (read) 暫存到內存設備中&#xff1b;輸出&#xff1a;應?程序將內存暫存的數據…

FANUC機器人基本保養概述

對于工業機器人來說&#xff0c;定期保養機器人可以延長機器人的使用壽命。對于FANUC機器人來說&#xff0c;FANUC機器人的常規保養周期可以分為日常、三個月、六個月、一年、兩年、三年。以下是FANUC機器人的基本保養周期概覽&#xff1a; 在實際生產應用中&#xff0c;可以參…

具身智能論文

目錄 1. PoSE: Suppressing Perceptual Noise in Embodied Agents for Enhanced Semantic Navigation2. Embodied Intelligence: Bionic Robot Controller Integrating Environment Perception, Autonomous Planning, and Motion Control3. Can an Embodied Agent Find Your “…

7.STL_string(詳細)

1. 什么是STL STL(standard template libaray-標準模板庫)&#xff1a;是C標準庫的重要組成部分&#xff0c;不僅是一個可復用的組件庫&#xff0c;而且 是一個包羅數據結構與算法的軟件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普實驗室完成的原始版…

maven遠程倉庫訪問順序

首先需要了解一下各個配置文件&#xff0c;主要分為三類&#xff1a; 全局配置文件(${maven.home}/conf/settings.xml)&#xff0c;maven安裝路徑下的/conf/settings.xml用戶配置文件(%USER_HOME%/.m2/settings.xml)&#xff0c;windows用戶文件夾下項目配置文件&#xff1a;p…