2014-07-18 5 views
0

두 개의 축과 두 개의 푸시 버튼을 사용하여 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)입니다. 이 사진은 내 이미지의 한 픽셀 일뿐입니다.

내가 뭘 잘못하고 있니?

+0

제공된 코드를 사용하여 오류를 재현 할 수 없습니다. 부수적으로, 핸들 구조를 변경하지 않으면 핸들 구조를 다시 호출 오브젝트에 기록 할 이유가 없습니다. – excaza

+0

감사합니다. 나는 내 코드를 다시 확인했다. 이 오류의 원인이되는 행은 아닙니다. 내가 발견 한 버그 - 나는 잘못 guidata 함수를 사용했습니다. – user2738748

+0

도와 드리겠습니다. 나는 이것을 내 의견에도 덧붙여 야했다 : ['guidata'] (http://www.mathworks.com/help/matlab/ref/guidata.html)에 대한 문서는''guidata ''를 사용하기위한주의 사항을 제공한다. GUIDE GUI. 새로운 필드를 추가하여'handles' 구조체와'guidata'를 자신 만의 목적으로 사용할 수 있지만, 바로이 이유 때문에 기존 핸들을 GUI 객체에 덮어 쓰지 않도록주의해야합니다. – excaza

답변

0

나는 비슷한 문제가있었습니다. 나는 타이머 객체를 사용하고 다른 축을 처리 된 핸들 객체에 전달했습니다. 내 응용 프로그램은 실시간으로 여러 카메라에서 데이터를 가져 왔습니다.