我在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
答案 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