두 개의 축과 두 개의 푸시 버튼을 사용하여 GUI (Matlab의 가이드로 작성)에서 작업하고 있습니다. 사용자가 pushbutton1을 누르면 axes1에 이미지를 표시하고 사용자가 pushbutton2를 누르면 axis2에 이미지를 표시하려고합니다. 사용자가 처음으로 버튼을 누를 경우에만이 코드는 잘 작동GUI에서 축을 만들면 핸들이 사라집니다.
function pushbutton1_Callback(hObject, eventdata, handles)
axes(handles.axes1);
imagesc(table(:,:,1));colormap(gray),axis('square');
guidata(hObject,handles);
function pushbutton2_Callback(hObject, eventdata, handles)
axes(handles.axes2);
imagesc(table(:,:,1));colormap(gray),axis('square');
guidata(hObject,handles);
:
이 내 코드입니다. 그가 다시 그것을하면 프로그램이 충돌하고 다음 오류가 발생합니다 : "존재하지 않는 필드 'axes1'참조".
모든 핸들을 표시 할 때 실제로 "axes1"핸들이 누락 된 것을 볼 수 있습니다.
내 축의 NextPlot 속성을 "new"로 변경하면이 오류가 발생하지 않습니다. 그러나이 경우 이미지를 전혀 표시 할 수 없습니다. 나는 오류가 발생하지 않는다는 것을 의미하지만 이미지의 오른쪽 상단은 회색이고 나머지는 흰색입니다. 두 차원의 플롯 범위는 (0,2000) 대신 (0,1)입니다. 이 사진은 내 이미지의 한 픽셀 일뿐입니다.
내가 뭘 잘못하고 있니?
제공된 코드를 사용하여 오류를 재현 할 수 없습니다. 부수적으로, 핸들 구조를 변경하지 않으면 핸들 구조를 다시 호출 오브젝트에 기록 할 이유가 없습니다. – excaza
감사합니다. 나는 내 코드를 다시 확인했다. 이 오류의 원인이되는 행은 아닙니다. 내가 발견 한 버그 - 나는 잘못 guidata 함수를 사용했습니다. – user2738748
도와 드리겠습니다. 나는 이것을 내 의견에도 덧붙여 야했다 : ['guidata'] (http://www.mathworks.com/help/matlab/ref/guidata.html)에 대한 문서는''guidata ''를 사용하기위한주의 사항을 제공한다. GUIDE GUI. 새로운 필드를 추가하여'handles' 구조체와'guidata'를 자신 만의 목적으로 사용할 수 있지만, 바로이 이유 때문에 기존 핸들을 GUI 객체에 덮어 쓰지 않도록주의해야합니다. – excaza