保存MATLAB的身材和保持所有的手柄(Saving a matlab figure and kee

2019-10-20 18:01发布

我想产生一个MATLAB数字与改变次要情节的轴的弹出菜单。 这工作至今。 但节约使用文件的数字时>保存,我把手被删除,它显示我以下错误信息:

Error using struct2handle
Error while evaluating uicontrol CreateFcn

Error using handle.handle/set
Invalid or deleted object.

Error in popup_test/mimi (line 33)
    set(h1,'XData', [0,8],'YData',[0,8])

Error while evaluating uicontrol Callback

它appeares,即节省了数字的时候,把手H1被删除。 它仍然是有一个号码,但ishandle(h1)返回0。

这是我制作我的数字与代码:

function popup_test2
figure;
a=magic(4);
h1=imagesc(a);
uicontrol(...
    'Style', 'popup',...
    'String', 'first|second',...
    'Position', [20 340 100 50],...
    'Callback', @popupfcn,...
    'CreateFcn', @popupfcn);

    function popupfcn(hObj,event) %#ok<INUSD>
        % Called when user activates popup menu
        val = get(hObj,'Value');
        if val ==1            
            set(h1,'XData', [0,5],'YData',[0,5])
        elseif val == 2
            set(h1,'XData', [0,8],'YData',[0,8])
        end
    end

end

到目前为止,我已经尝试使用保存saveas(gcf,'filename.fig')没有工作)和hgsave ,这听起来前途,但我不知道如何正确使用它...

Answer 1:

什么你缺少的是重建h1加载数字后。 这可以使用下面的代码行来完成:

h1 = findobj(gcf,'type','image');

findobj发现绘制的图像-让你为你喜欢改变它的手柄。

见最后的代码:

function popup_test2
figure;
a=magic(4);
h1=imagesc(a);
uicontrol(...
    'Style', 'popup',...
    'String', 'first|second',...
    'Position', [20 340 100 50],...
    'Callback', @popupfcn,...
    'CreateFcn', @popupfcn);

    function popupfcn(hObj,event) %#ok<INUSD>
        h1=findobj(gcf,'type','image');
        % Called when user activates popup menu
        val = get(hObj,'Value');
        if val ==1            
            set(h1,'XData', [0,5],'YData',[0,5])
        elseif val == 2
            set(h1,'XData', [0,8],'YData',[0,8])
        end
    end

end

请注意,保存数据/一起处理与你的身材一般应采用完成guidata



文章来源: Saving a matlab figure and keeping all handles