使用指南,我制作了一个 Matlab Gui,它有 10 个轴,我想在其中显示图像,在我按下按钮后一次显示所有图像。
我制作了一个单独的.m文件,其中包含从 Button Callback 调用的函数 Load_Write_Img_Results(img_index)
,该函数具有以下代码:
for i = 1 : 10
handles_imgOut = findobj('Tag', ['imgOut' num2str(i)]);
set(handles_imgOut, 'HandleVisibility', 'ON');
axes(handles_imgOut);
image(imgs_data{img_index(i)});
...
end
每次我运行主 Gui 并第一次按下按钮时,图像都会显示在所有轴上,所以一切正常。
当我第二次按下按钮时出现问题,我收到此错误:
Error using axes
Invalid object handle
在这条线上:
axes(handles_imgOut);
调试时,我看到在handles_imgOut = findobj('Tag', ['imgOut' num2str(i)]);
is handles_imgOut
not get any value and is empty之后,很明显那个错误。
第二次按下按钮时我有没有机会获得轴的手柄?
另外,我想知道如何从 Matlab 解决这个警告:
Calling AXES(h) in a loop can be slow. Consider moving the call to AXES outside the loop.
在此先感谢,欢迎任何建议!
[解决方案]:
for i = 1 : 10
handles_imgOut = findobj('Tag', ['imgOut' num2str(i)]);
set(handles_imgOut, 'HandleVisibility', 'ON');
axes(handles_imgOut);
image(imgs_data{img_index(i)});
set(gca, 'Tag', ['imgOut' num2str(i)]); //! renew the tag
...
end