2011-10-30 52 views
1

在我的一個回調函數中,我加載了一個wav文件,然後在一個座標軸上繪製它。 在另一個回調中,我嘗試播放wav文件,但它不工作。 請幫忙,我該怎麼玩呢?matlab gui make array public

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); 

回答

3

如果你需要保持在導產生的GUI application data,一種方法是使用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