其好處在於針對重複性工作,
不須重複地寫類似但又有點不同的語法。
其概念是提取變數後,再做另行指定變數內容。
此法可提高程式的結構性,亦可降低編寫語法的錯誤。
舉例來說:
假設需要呈現3張圖片,
每張圖片分別是不同的圖,
每張圖片呈現時間都不太一樣,
每張圖片呈現時要送出不同的trigger編碼給腦波儀,
每張圖片呈現時會記錄下事件發生時間點,並且存檔在logfile裡面。
照理講,可以使用SDL語法,依照這不同需求,寫3段客製化的語法。
除此之外,Presentation提供Template功能,可讓這3段類似的語法,
提取出重要變數,譬如:圖片檔名、圖片呈現時間、圖片trigger編碼等,
並將重複語法節省成一段模板(Template),
使用模板時,只需輸入變數內容,逐一執行,即可。
更有意思的是,這3段類似的語法,還可以使用Randomize指令,使呈現順序得以隨機。
目前這個範例是3段類似語法,Template的效用似乎並沒那麼明顯。
倘若您有100個類似語法,那麼Template的功能就顯地特別的重要了。
以下,來看一下簡易範例。
一、新增一個scenario檔案
把這個檔案當作主要執行程式的語法,並在裡面撰寫SDL語法。
1. 幫這個scenario取名,為"test"
2. begin; 用來表示開始執行這個scenario
3. 呼叫檔名為main.tem 的Template檔案
二、新增一個template檔案
1. 新增一個template檔案,並取名為main.tem
三、反覆對照兩個檔案
請在scenario檔案以及template兩個檔案之間,反覆對照著看。
在template檔案裡,設定了四個變數,用$ (dolloar)符號指定,分別是:
$type、$dur、$pic、$ecode
在scenario檔案的SDL語法中,撰寫依序呈現的順序,並將變數內容指定進去。
第一個 trial 的 trial_type = fixed,
trial_duration = 3000,
picture 檔名是 001.jpg,
code = "scenery" 。
第二個 trial ......
第三個 trial ......
....
以此類推。
基本上,執行時重複地使用template,但每次的使用會依照指定的變數內容執行。
以下影片是依照上面程式碼,包含一個scenario檔案、以及一個template檔案。
依序呈現001[風景]、002[戀人對看]、003[卡通]的實驗執行畫面。
如果這些trial的呈現順序想要隨機,如下圖,只需再多寫randomize語法,即可完成。
以下影片,就是呈現順序隨機的執行畫面。基本上,每次執行實驗的圖片呈現順序,應該都會以隨機方式決定順序。
後語: Presentation的手冊上提及,Template使用上仍不像PCL語法那樣具彈性。
PCL可以寫變數、迴圈、判斷、檔案輸入、檔案輸出,因此,在對付複雜的嘗試順序安排時,PCL還是比較好的選擇。
沒有留言:
張貼留言