Вы можете сделать фигуру невидимой с помощью:
figure('Visible', 'off');
А потом просто запишите это как Matlab fig через:
saveas(gcf, 'path/to/filename');
или с помощью команды print
для png в этом случае
print('-dpng', 'path/to/filename');
Аналогичный вопрос с хорошими ответами и объяснениями, где на stackoverflow
Обновление
Спасибо Стиву за указание на эту недокументированную функцию Matlab
function so;
close all;
im = imread('cameraman.tif');
hfig = figure('Visible', 'off'), imshow(im, 'Border', 'tight');
for n=1:2
rectangle('Position', [20*n, 20*n, 50, 50], 'EdgeColor', 'g', 'LineWidth', 2)
hold on;
end
F = im2frame(zbuffer_cdata(gcf));
imwrite(F.cdata, 'test.png');
% Function copied from
% http://www.mathworks.com/support/solutions/en/data/1-3NMHJ5/?solution=1
% -3NMHJ5
%
function cdata = zbuffer_cdata(hfig)
% Get CDATA from hardcopy using zbuffer
% Need to have PaperPositionMode be auto
orig_mode = get(hfig, 'PaperPositionMode');
set(hfig, 'PaperPositionMode', 'auto');
cdata = hardcopy(hfig, '-Dzbuffer', '-r0');
% Restore figure to original state
set(hfig, 'PaperPositionMode', orig_mode);