用于许多试验的GUI循环

时间:2014-03-30 11:36:26

标签: matlab matlab-guide

最初我的编程是这样的(播放声音并判断出是什么类型的声音):

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

我的回调现在也是空的 我想做的是:

- 最初所有按钮都处于非活动状态 - 参加者应按下确定开始 - 播放声音 - 激活按钮(声音鸟,水,风) - 响应 - 停用按钮 等待新闻试用

我怎样才能使我的初始代码适应回调,我应该把循环放在哪里?感谢

1 个答案:

答案 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