我在MATLAB中有一个接口,通过按下button2绘制曲线。我现在打不出这个数字。更准确地说,我想添加另一个按钮来打印出绘图。下面是我的一段代码:
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%clear
%linkdata on
fileName = handles.fileName;
n_var=str2num(get(handles.n_var,'string'));
[x] = readColumns(fileName, n_var);
axes(handles.axes1);
hold on
plot(handles.axes1,x(1:n),'b','LineWidth',2)
hold off
谢谢。
看起来你使用GUIDE来制作你的GUI,所以你应该以同样的方式添加你的新按钮(通过GUIDE)。假设您已经这样做了,那么在它的回调函数中,您将希望有这样的内容:
function printButton_Callback(hObject, eventdata, handles)
fileName = handles.fileName;
im = getframe(handles.axes1);
%saves the image in variable "im" to a PNG file
imwrite(im.cdata, fileName, 'PNG')
end
getframe函数获取输入句柄参数(在本例中是轴句柄)的快照,并返回包含图像数据("cdata")和用于该帧的颜色图的结构。然后用imwrite将图像数据写入磁盘,其中fileName可能是一个字符串,具有您想要的文件名,'PNG'告诉imwrite您想要的扩展名(您也可以使用BMP/GIF/JPEG或其他)
还有一个小问题,在你的问题中,你可以互换使用图形和情节,但图形可能与情节不同;也就是说,你的图形将是你的整个GUI,而情节将在你的轴上,这将是你的GUI的子。
编辑:为了保留您的轴标签,您可能必须使用不同的方法。相反,你可以这样做:
function printButton_Callback(hObject, eventdata, handles)
fileName = handles.fileName;
f_tmp = figure('visible', 'off');
copyobj(handles.axes1,f_tmp);
print(f_tmp, '-dpng', fileName);
close(f_tmp);
end
这将创建一个隐藏的图形f_tmp,复制你的情节手柄。axes1到隐藏的图形,然后将其打印到一个PNG文件(由标志'-dpng'指定,您可以使用其他扩展名),以字符串fileName命名。最后,它关闭了隐藏的人物。我想这样可以,如果不行请告诉我