2016-06-02 24 views
0

Ich habe eine Liste von Matlab GUI, die alle Dateien in einem Ordner und einer Drucktaste anzeigt. Das Programm sollte ausgeführt werden, wenn ich eine Datei auswähle, die in der Listbox angezeigt wird und auf die Drucktaste klicke. Hier ist mein Code:Auswahl einer Datei in Listbox Matlab GUI

allfiles = dir; %get files 
allname = {allfiles(~[allfiles.isdir]).name}; 
set(handles.wavlist, 'String', allname); 

function wavlist_Callback(hObject, eventdata, handles) 
    filenames = get(hObject, 'String'); 
    filechoice = get(hObject, 'Value'); 
    fileselected = wavnames{filechoice}; 

function wavlist_CreateFcn(hObject, eventdata, handles) 
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 
     set(hObject,'BackgroundColor','white'); 
    end 

function tab1button_Callback(hObject, eventdata, handles) 
    [y, fs, nbits, opts] = wavread(fileselected); 

Aber ich bekomme Fehler undefinierte Funktion oder Variable 'fileselected'. Irgendeine Idee? Vielen Dank ...

+0

Bitte lassen Sie uns wissen, wenn die Antwort unten für Sie nützlich war ... – bushmills

Antwort

0

In der Funktion tab1button_Callback ist die Variable fileselected nicht deklariert. Sie müssen fileselected global deklarieren oder sogar viel besser in die handles Struktur, die ein Argument aller Funktionen ist. Diese Struktur soll Benutzerdaten speichern.

allfiles = dir; %get files 
allname = {allfiles(~[allfiles.isdir]).name}; 
set(handles.wavlist, 'String', allname); 

function wavlist_Callback(hObject, eventdata, handles) 
filenames = get(hObject, 'String'); 
filechoice = get(hObject, 'Value'); 
handles.fileselected = wavnames{filechoice}; 

function wavlist_CreateFcn(hObject, eventdata, handles) 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 
    set(hObject,'BackgroundColor','white'); 
end 

function tab1button_Callback(hObject, eventdata, handles) 
[y, fs, nbits, opts] = wavread(handles.fileselected); 
+0

Danke Bushmills. Aber es heißt immer noch Referenz auf nicht vorhandenes Feld 'selected_file'. Hast du eine Ahnung davon? – raviani

+0

Eigentlich möchte ich eine WAV-Audiodatei bearbeiten. Tritt dies ein, weil ich die .wav-Erweiterung nicht einschließe? – raviani

+0

Die Variable 'selected_file 'wird nicht in Ihrem Code-Snippet beendet. Können Sie bitte erklären, wo Sie es verwenden? Und Sie haben recht, wenn Sie die Dateierweiterung nicht angeben, wird MATLAB die Datei nicht finden. – bushmills