2

我在 MATLAB 中以编程方式创建了一个 GUI,它允许用户调整某些参数以更改轴上显示的数据。我希望用户能够将该轴保存为 MATLAB 图。我尝试了多种通过谷歌和 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
4

1 回答 1

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
于 2013-10-27T23:30:01.890 回答