最初我的编程是这样的(播放声音并判断出是什么类型的声音):
n_repetition=10
for i=1:n_repetition
playsound(strcat(i,'wav'));
answer=input(' answer q/z/e ?','s');
switch answer
case 'q'
asw="bird";
case 'z'
asw="water";
case 'e'
asw="wind";
otherwise
disp('error');
end
end
现在我正在尝试使用GUI更具互动性,我正在使用GUIDE,并且我生成了一个包含4个按钮的.fig:OK按钮,BIRD,WATER,WIND
我的回调现在也是空的 我想做的是:
- 最初所有按钮都处于非活动状态 - 参加者应按下确定开始 - 播放声音 - 激活按钮(声音鸟,水,风) - 响应 - 停用按钮 等待新闻试用
我怎样才能使我的初始代码适应回调,我应该把循环放在哪里?感谢
答案 0 :(得分:1)
在guiname__OpeningFcn -
的开头添加这些handles.song_count = 0;
handles.asw = cell(10,1);
编辑按钮回调到这些 -
% --- Executes on button press in ok_button.
function ok_button_Callback(hObject, eventdata, handles)
handles.song_count = handles.song_count +1;
filename = strcat(num2str(handles.song_count),'.wav');
[y,~] = audioread(filename);
%%// Use soundsc or your custom playsound function to play the sounds
soundsc(y); %playsound(strcat(i,'wav'));
guidata(hObject, handles); %%// Save handles data
return;
% --- Executes on button press in bird_button.
function bird_button_Callback(hObject, eventdata, handles)
asw = 'bird'; %%// Do something with 'asw'
handles.asw(handles.song_count) = {asw}; %%// Store the 'asw' values as a cell array
guidata(hObject, handles); %%// Save the handles data
return;
% --- Executes on button press in water_button.
function water_button_Callback(hObject, eventdata, handles)
asw = 'water'; %%// Do something with 'asw'
handles.asw(handles.song_count) = {asw}; %%// Store the 'asw' values as a cell array
guidata(hObject, handles); %%// Save the handles data
return;
% --- Executes on button press in wind_button.
function wind_button_Callback(hObject, eventdata, handles)
asw = 'wind'; %%// Do something with 'asw'
handles.asw(handles.song_count) = {asw}; %%// Store the 'asw' values as a cell array
guidata(hObject, handles); %%// Save the handles data
return;
注意:在任何时间点handles.asw
查看按钮点击历史记录。
建议:如果可以将GUI用户的选择显示为列表,您可以考虑在GUI中添加Table
。您可以将handles.asw
中的数据放入此类Table
。