質問編集履歴
4
動作の詳細を追記し、それに伴い「逐次処理」の内容も修正いたしました
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
並列処理時の反応時間算出を追記しました
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
逐次処理を追加しました
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
該当のソースコードの表示方法を変更しました
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
|
-
|
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
|
|