MATLAB Answers

0

Error : Function definition is misplaced or improperly nested.

Asked by suoh mikoto on 28 Apr 2019
Latest activity Answered by Geoff Hayes
on 28 Apr 2019
here the code.
[filename,pathname] = uigetfile({'*'})
if ~isequal(filename,0)
info = imginfo(fullfile(pathname,filename));
if info.BitDepth == 1
msgbox('Citra harus RGB atau Grayscale');
return
else if info.BitDepth == 8
Img = imread(fullfile(pathname,filename));
axes(handles.axes1)
cla('reset')
imshow(Img)
title('Grayscale Image')
else
Img = rgb2gray(imread(fullfile(pathname,filename)));
axes(handles.axes1)
cla('reset')
imshow(Img)
title('Grayscale Image')
end
return
end
handles.Img = Img;
guidata(hObject,handles);

  5 Comments

I think that one problem might be with your "else if". In MATLAB, there isn't a space and so this is just "elseif". The way you have it right now suggests that you have an else block followed by another if/else block which would need to be terminated with an end just like the previous two if blocks... but you only have two ends which might then be the source of the error.
For sure the last two lines are out of place and should be in the body of the block that defines the Img. And your first if block is missing an end.
that's right, there isn't a space on my "else if".
solved, thanks.

Sign in to comment.

1 Answer

Answer by Geoff Hayes
on 28 Apr 2019

suoh - I think that one problem might be with your "else if". In MATLAB, there isn't a space and so this is just "elseif". The way you have it right now suggests that you have an else block followed by another if/else block which would need to be terminated with an end just like the previous two if blocks... but you only have two ends which might then be the source of the error.
For sure the last two lines are out of place and should be in the body of the block that defines the Img. And your first if block is missing an end.

  0 Comments

Sign in to comment.