Trying to Program a Switch-Case Expression for a Pop-up Menu in a MATLAB GUI
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
Walter Roberson
2012년 7월 18일
handles.current_filter = @imdilate;
Without the @ it is going to _ call_ imdilate with no arguments.
댓글 수: 0
추가 답변 (2개)
Sean de Wolski
2012년 7월 19일
편집: Sean de Wolski
2012년 7월 19일
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
Sean de Wolski
2012년 7월 19일
It should just be:
imshow(handles.image2,'parent',handles.axes2);
참고 항목
카테고리
Help Center 및 File Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!