Matlab Error, Non-existent field, axes properties.
조회 수: 1 (최근 30일)
이전 댓글 표시
hello,...
i've got some home work n' i'm working with 2 axes (axes1, axes2), 2 push button (browse1, browse2) made by guide... when i push the button, i want to put an image to each axes (browse1 for axes1, browse2 for axes2) i've done it but i got some error
here's my code:
% --- Executes on button press in browse1.
function browse1_Callback(hObject, eventdata, handles)
[FileName,PathName] = uigetfile('*.jpg;*.png;*.tiff;','Select file');
if(FileName~=0)
axes(handles.axes1)
handles.gambar=imread(fullfile(PathName, FileName));
image(handles.gambar)
axis off
else
return
end
guidata(hObject, handles);
% --- Executes on button press in browse2.
function browse2_Callback(hObject, eventdata, handles)
[FileName,PathName] = uigetfile('*.jpg;*.png;*.tiff;','Select file');
if (FileName~=0
axes(handles.axes2)
handles.gambar=imread(fullfile(PathName, FileName));
image(handles.gambar)
axis off
else
return
end
guidata(hObject, handles);
and the generated error:
??? Reference to non-existent field 'axes2'.
error in line 107 => axes(handles.axes2)
i thought, it's because handles cannot read existence of axes2, i have checked it in property insp. but i still don't know what is the problem.... is there some properties of axes2 i missed??
댓글 수: 0
채택된 답변
Chandra Kurniawan
2012년 1월 14일
Hi,
in the pushbutton1 callback you should write :
function browse1_Callback(hObject, eventdata, handles)
handles.output = hObject;
[FileName,PathName] = uigetfile('*.jpg;*.png;*.tiff;','Select file');
if(FileName~=0)
axes(handles.axes1)
handles.gambar=imread(fullfile(PathName, FileName));
image(handles.gambar)
axis off
else
return
end
guidata(hObject, handles);
in the pushbutton2 callback you should write :
function browse2_Callback(hObject, eventdata, handles)
handles.output = hObject;
[FileName,PathName] = uigetfile('*.jpg;*.png;*.tiff;','Select file');
if (FileName~=0)
axes(handles.axes2)
handles.gambar=imread(fullfile(PathName, FileName));
image(handles.gambar)
axis off
else
return
end
guidata(hObject, handles);
댓글 수: 5
추가 답변 (1개)
Jan
2012년 1월 14일
Obviously axes2 is not a field of handles. Most likely you've created the button's callback before the axes2-object. Then updating the handles dynamically would be a solution:
% --- Executes on button press in browse2.
function browse2_Callback(hObject, eventdata, handles)
[FileName,PathName] = uigetfile('*.jpg;*.png;*.tiff;','Select file');
handles = guidata(hObject); % Update
if ischar(FileName) % Better than FileName~=0 !
axes(handles.axes2)
...
"if FileName~=0" works, but is not smart: Internally this is equivalent to:
if all(FileName ~= char(0)) & ~isempty(FileName)
So better use "ischar(FileName)" or "isequal(FileName, 0)".
댓글 수: 3
Walter Roberson
2012년 1월 14일
It appears that randy is using GUIDE. The callbacks generated by GUIDE automatically fetch the most-recently-updated version of guidata, so Jan's guidata() solution would not be expected to help.
We have not seen enough code to know that axes2 really exists.
참고 항목
카테고리
Help Center 및 File Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!