2011-10-30 50 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