MATLAB:如何将GUI中生成的轴保存到'.fig'文件?

时间:2013-10-27 22:16:07

标签: matlab user-interface

我在MATLAB中以编程方式创建了一个GUI,允许用户调整某些参数来更改轴上显示的数据。我希望用户能够将这些轴保存为MATLAB图形。我尝试过通过Google和MATLAB文档找到的多种方法,但都没有。

我目前的非工作代码:

% Creation of the axes ui component
a1 = axes('Units','pixels','Position',[20,18,270,255],'box','on');

% Skipped ahead to callback for 'save' menu item
function menu1_callback(~,~)
    % Creates a new figure
    f2 = figure;
    % Copies the axes a1 to the new figure
    copyobj(a1,f2);
    % Save the new figure
    saveas(gcf,'filename','fig');
end

这是MATLAB生成的错误:

Error using getProxyValueFromHandle (line 15)
Input must be a valid handle.

Error in plotedit (line 91)
                [varargout{1:nargout}] = feval(args{:});

Error in specgraph.barseries/preserialize (line 10)
peerVals = plotedit({'getProxyValueFromHandle',hPeers});

Error in hgsaveStructDbl (line 80)
        olddata{i} = {hh,preserialize(hh)};

Error in hgsave (line 62)
    hgS = hgsaveStructDbl(h, SaveAll);

Error in saveasfig (line 7)
hgsave( h, name );

Error in saveas (line 126)
    feval( ['saveas' format], h, name )

Error in GBdataVisualiser2/menu1_callback (line 165)
        saveas(gcf,'filename','fig');

Error while evaluating uimenu Callback

1 个答案:

答案 0 :(得分:0)

您似乎将错误的句柄传递给函数saveas。我认为函数gcf仅在您处理在单独屏幕中打开的普通数字时才有效,而不是在GUI上嵌入的数字。

我会尝试:

% Skipped ahead to callback for 'save' menu item
function menu1_callback(~,~)
    % Creates a new figure
    f2 = figure;
    % Copies the axes a1 to the new figure
    copyobj(a1,f2);
    % Save the new figure
    saveas(f2,'filename','fig');
end