質問編集履歴

4

動作の詳細を追記し、それに伴い「逐次処理」の内容も修正いたしました

2020/10/05 12:10

投稿

Gotchara
Gotchara

スコア10

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,28 @@
48
48
 
49
49
 
50
50
 
51
+ 以下、行いたい動作の詳細になります。
52
+
53
+ 1. 生体信号の取得開始、figure表示
54
+
55
+ 2. +キーの呈示
56
+
57
+ 3. 生体信号にて特定波形が得られるまで待機。得られた場合にtrig=1とする
58
+
59
+ 4. trig==1の場合、画像Aを呈示する
60
+
61
+ 5. キー入力を求める[j/f]
62
+
63
+ 6-1. キー入力を求められてから反応するまでの時間が<5sの場合: 画像B呈示
64
+
65
+ 6-2. 5s>の場合: 画像Cを呈示
66
+
67
+ 以後、2~6を繰り返す
68
+
69
+
70
+
71
+
72
+
51
73
  ### 該当のソースコード
52
74
 
53
75
 
@@ -162,6 +184,34 @@
162
184
 
163
185
 
164
186
 
187
+ % テクスチャーの作成 (追記)
188
+
189
+ imgfile = ['./Resource/fixation.jpg'];
190
+
191
+ imgdata = imread(imgfile);
192
+
193
+ imgtexFixation = Screen('MakeTexture', mainWindow, imgdata);
194
+
195
+
196
+
197
+ imgfile = ['./Resource/imgA.jpg'];
198
+
199
+ imgdata = imread(imgfile);
200
+
201
+ imgteximgA = Screen('MakeTexture', mainWindow, imgdata);
202
+
203
+
204
+
205
+ imgfile = ['./Resource/imgB.jpg'];
206
+
207
+ imgdata = imread(imgfile);
208
+
209
+ imgteximgB = Screen('MakeTexture', mainWindow, imgdata);
210
+
211
+
212
+
213
+
214
+
165
215
  while 1
166
216
 
167
217
  trig = 0;
@@ -172,7 +222,21 @@
172
222
 
173
223
  % 外部デバイスからの信号を得続け、figureに描画する
174
224
 
225
+
226
+
227
+ Screen('DrawTexture', mainWindow, imgtexFixation); % +表示
228
+
229
+ Screen('Flip', mainWindow);
230
+
231
+
232
+
175
- % 特定の波形が検出されるたびにtrig=1にし、その時刻を記録する
233
+ % 特定の波形が検出されるたびにtrig=1にし、その時刻を記録する
234
+
235
+ if 特定の波形
236
+
237
+ trig = 1;
238
+
239
+ end
176
240
 
177
241
 
178
242
 
@@ -200,8 +264,22 @@
200
264
 
201
265
  KeyOn = 1;
202
266
 
267
+ Screen('DrawTexture', mainWindow, imgteximgA); % 画像A呈示
268
+
269
+ Screen('Flip', mainWindow);
270
+
203
271
  break;
204
272
 
273
+ % elseifを追記しました
274
+
275
+ elseif round((time_stim_presn_ed-RT_start)*1000) >= 5000 % 5s(5000ms)反応がない場合
276
+
277
+ Screen('DrawTexture', mainWindow, imgteximgB); % 画像B呈示
278
+
279
+ Screen('Flip', mainWindow);
280
+
281
+ break;
282
+
205
283
  end
206
284
 
207
285
  end

3

並列処理時の反応時間算出を追記しました

2020/10/05 12:10

投稿

Gotchara
Gotchara

スコア10

test CHANGED
File without changes
test CHANGED
@@ -186,6 +186,8 @@
186
186
 
187
187
 
188
188
 
189
+ RT_start = GetSecs;
190
+
189
191
  KeyOn = 0;
190
192
 
191
193
  while KeyOn == 0 % キー入力があるまで待機
@@ -204,6 +206,12 @@
204
206
 
205
207
  end
206
208
 
209
+
210
+
211
+ RT = round((secs-RT_start)*1000); % 反応時間(ms)算出
212
+
213
+ disp(RT)
214
+
207
215
 
208
216
 
209
217
  end

2

逐次処理を追加しました

2020/10/05 08:47

投稿

Gotchara
Gotchara

スコア10

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  現在、以下のようなプログラムを構築しようと考えております。
8
8
 
9
- 1. 外部デバイスからの生体信号をMATLAB上で得続ける
9
+ 1. 外部デバイスからの生体信号をMATLAB上で得続け、描画す
10
10
 
11
11
  2. 生体信号にて特定の波形が見つかったらトリガーを出すことを繰り返す
12
12
 
@@ -38,6 +38,16 @@
38
38
 
39
39
 
40
40
 
41
+ (10/5)
42
+
43
+ 逐次処理で書いたものを追記いたしました。
44
+
45
+ parfevalを用いたものよりも、こちらで書いた内容のほうがより本来行いたい内容と近くなっております。
46
+
47
+
48
+
49
+
50
+
41
51
  ### 該当のソースコード
42
52
 
43
53
 
@@ -132,6 +142,78 @@
132
142
 
133
143
 
134
144
 
145
+ ### 逐次処理
146
+
147
+ ```ここに言語を入力
148
+
149
+ % 本来行いたかった処理を逐次処理にて書いたものです (簡略化しております)。
150
+
151
+ % 動作2におけるキー反応待機中も動作1を行いたいのですが、停止してしまうという問題が生じるため並列処理を考えておりました
152
+
153
+
154
+
155
+ KbName('UnifyKeyNames');
156
+
157
+ F_Key = KbName('f');
158
+
159
+ J_Key = KbName('j');
160
+
161
+ trig_cnt = 1;
162
+
163
+
164
+
165
+ while 1
166
+
167
+ trig = 0;
168
+
169
+
170
+
171
+ % 動作1 (省略しております)
172
+
173
+ % 外部デバイスからの信号を得続け、figureに描画する
174
+
175
+ % 特定の波形が検出されるたびにtrig=1にし、その時刻を記録する
176
+
177
+
178
+
179
+ % 動作2
180
+
181
+ if trig == 1
182
+
183
+ trig_cnt = trig_cnt + 1;
184
+
185
+ fprintf(1,'第 %d \n', trig_cnt);
186
+
187
+
188
+
189
+ KeyOn = 0;
190
+
191
+ while KeyOn == 0 % キー入力があるまで待機
192
+
193
+ time_stim_presn_ed = GetSecs;
194
+
195
+ [keyDown, secs, keycode] = KbCheck;
196
+
197
+ if keycode(J_Key) || keycode(F_Key)
198
+
199
+ KeyOn = 1;
200
+
201
+ break;
202
+
203
+ end
204
+
205
+ end
206
+
207
+
208
+
209
+ end
210
+
211
+
212
+
213
+ end
214
+
215
+ ```
216
+
135
217
 
136
218
 
137
219
  ### 試したこと

1

該当のソースコードの表示方法を変更しました

2020/10/05 07:45

投稿

Gotchara
Gotchara

スコア10

test CHANGED
File without changes
test CHANGED
@@ -41,6 +41,8 @@
41
41
  ### 該当のソースコード
42
42
 
43
43
 
44
+
45
+ ```ここに言語を入力
44
46
 
45
47
  clear;
46
48
 
@@ -118,13 +120,15 @@
118
120
 
119
121
  trig = 0;
120
122
 
121
- end
123
+ end
122
124
 
123
125
  WaitSecs(0.5);
124
126
 
125
127
  end
126
128
 
127
129
  end
130
+
131
+ ```
128
132
 
129
133
 
130
134