Matlab GUI сделать массив публичным - PullRequest
1 голос
/ 30 октября 2011

в одном из моих обратных вызовов я загружаю wav-файл, затем строю его по осям в другом обратном вызове я пытаюсь воспроизвести файл WAV, но он не работает. Пожалуйста, помогите, как я могу играть в нее ??

function btnload_Callback(hObject, eventdata, handles)
[filename, pathname] = uigetfile('*.wav','Select Data File');
[y,fs] = wavread([pathname filename]);
axes(handles.axes1)
plot(y);
title('ORIGINAL AUDIO SIGNAL');
ylabel('t');
guidata(hObject, handles); %updates the handles




function btnplay1_Callback(hObject, eventdata, handles)
soundsc(y,fs); 

1 Ответ

3 голосов
/ 30 октября 2011

Если вам нужно поддерживать данные приложения в GUI-генерируемых GUI, одним из способов является использование структуры handles, которая передается всем функциям обратного вызова:

function btnload_Callback(hObject, eventdata, handles)
    %# read WAV file
    [filename, pathname] = uigetfile('*.wav','Select Data File');
    [y,fs] = wavread([pathname filename]);

    %# plot wave
    axes(handles.axes1)
    plot(y);
    title('ORIGINAL AUDIO SIGNAL');
    ylabel('t');

    %# save it to handles structure
    handles.y = y;
    handles.fs = fs;
    guidata(hObject, handles);      %# updates the handles
end

function btnplay1_Callback(hObject, eventdata, handles)
    %# retrieve the wave data, and play the sound
    soundsc(handles.y, handles.fs);
end
...