Trying to Program a Switch-Case Expression for a Pop-up Menu in a MATLAB GUI
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Walter Roberson
le 18 Juil 2012
handles.current_filter = @imdilate;
Without the @ it is going to _ call_ imdilate with no arguments.
0 commentaires
Plus de réponses (2)
Sean de Wolski
le 19 Juil 2012
Modifié(e) : Sean de Wolski
le 19 Juil 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 commentaires
Sean de Wolski
le 19 Juil 2012
It should just be:
imshow(handles.image2,'parent',handles.axes2);
Voir également
Catégories
En savoir plus sur Migrate GUIDE Apps dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!