Trying to Program a Switch-Case Expression for a Pop-up Menu in a MATLAB GUI
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Can someone tell me what's wrong with my syntax or any other errors you spot?
% --- Executes on selection change in popupmenu_filters.
function popupmenu_filters_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu_filters (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% determine which filter to apply by reading string in pop-up menu
str = get(hObject, 'String');
val = get(hObject, 'Value');
% set current filter to the user-selected filter
switch str{val};
case 'imdilate'
handles.current_filter = imdilate
case 'imerode'
handles.current_filter = imerode
case 'imopen'
handles.current_filter = imopen
case 'imclose'
handles.current_filter = imclose
case 'imtophat'
handles.current_filter = imtophat
case 'imbothat'
handles.current_filter = imbothat
case 'entropy filter'
handles.current_filter = entropyfilt
end
handles.image2 = handles.current_filter(handles.image);
handles.axes2(imshow(handles.image2));
% pushbutton_save handles structure
guidata(hObject, handles);
0 Commenti
Risposta accettata
Walter Roberson
il 18 Lug 2012
handles.current_filter = @imdilate;
Without the @ it is going to _ call_ imdilate with no arguments.
0 Commenti
Più risposte (2)
Sean de Wolski
il 19 Lug 2012
Modificato: Sean de Wolski
il 19 Lug 2012
Rather than using switch I would package this as a cell array of function handles and then extract the value:
ops={@imdilate,@imerode,@imopen} %etc
handles.current_filter = ops{val};
4 Commenti
Sean de Wolski
il 19 Lug 2012
It should just be:
imshow(handles.image2,'parent',handles.axes2);
Vedere anche
Categorie
Scopri di più su Migrate GUIDE Apps in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!