有没有办法做到这一点?
我知道如何使用saveas(saveas(1, filename, 'pdf');
)将一个数字保存为PDF文件,但是可以添加倍数吗?就像(saveas(1,2,3) filename, 'pdf'));
。
由于
答案 0 :(得分:3)
我不这么认为 - 你需要以某种方式增加文件名。我会使用类似的东西:
for ii=1:3
saveas(ii,[filename '-' num2str(ii)],'pdf)
end
作为旁注,我在将matlab生成的pdf包含在稿件提交中时遇到了一些困难。我目前的解决方案是生成eps文件并使用shell脚本进行转换。
R /
答案 1 :(得分:3)
我认为值得指出的是,您可以使用hgsave
和hgload
来获取您所针对的行为,但前提是您很乐意使用.fig保存。这些函数的文档骗了我一段时间,相信他们可以使用其他扩展(例如.pdf),但我无法在我的机器上工作(Linux Mint v12,Matlab r2012b)。也许其他人可能会做得更好。使用.fig扩展名的示例如下:
%# Create some example data
x = (0:10)';
y1 = (1/10) * x;
y2 = sin(x);
%# Create an array of figures and an array of axes
AllFig(1) = figure('Visible', 'off');
AllFig(2) = figure('Visible', 'off');
AllAxes(1) = axes('Parent', AllFig(1));
AllAxes(2) = axes('Parent', AllFig(2));
%# Plot the data on the appropriate axes
plot(AllAxes(1), y1);
plot(AllAxes(2), y2);
%# Save both figures to .fig in one hit using hgsave
hgsave(AllFig, 'TwoFigsOneFile.fig');
% Clear the workspace
clear
%# Load both figures in one hit using hgload
LoadFig = hgload('TwoFigsOneFile.fig');
%# Display the first figure and second figure
figure(LoadFig(1));
figure(LoadFig(2));
答案 2 :(得分:2)
迟到的回复,但我想我会补充说你可以使用publish命令并发布到pdf。使用plot命令创建一个m文件'myfile.m',如
plot(x1,y1);
plot(x2,y2);
然后使用
运行此文件publish('myfile.m', 'pdf')
这可以给你你想要的东西。
答案 3 :(得分:2)
使用MATLAB的publish
命令是一个很好的解决方案,正如其他答案所指出的那样。如果您正在寻找更多关于如何组合不同数字的控制,另一种解决方案是使用pdflatex
将数字编译成单个PDF。
LaTeX
代码,其中包含数字PDFLaTeX
以下是概念证明,它将文件名称作为char
和一些function_handle
s,并生成包含这些数字的PDF。
function res = save2pdf(name,varargin)
pathToPdflatex = '/Library/TeX/texbin/pdflatex' ;
files = cell(size(varargin)) ;
for ii = 1:numel(varargin)
files{ii} = sprintf('%s_fig%g.pdf',name,ii) ;
print(varargin{ii},'-dpdf','-painters',files{ii}) ;
end
fh = fopen(sprintf('%s.tex',name),'w+') ;
fprintf(fh,'\\documentclass{article}\n') ;
fprintf(fh,'\\usepackage{graphicx}\n') ;
fprintf(fh,'\\begin{document}\n') ;
for ii = 1:numel(files)
fprintf(fh,'\\includegraphics[width=\\textwidth]{%s}\n\\newpage\n',files{ii}) ;
end
fprintf(fh,'\\end{document}\n') ;
fclose(fh) ;
[~,res] = system(sprintf('%s %s.tex',pathToPdflatex,name)) ;
disp(res)
end
示例:
n = 1e+5 ;
x0 = cumsum(randn(n,1)) ;
x1 = cumsum(randn(n,1)) ;
f0 = figure() ;
f1 = figure() ;
ax0 = axes('Parent',f0) ;
ax1 = axes('Parent',f1) ;
plot(ax0,x0) ;
plot(ax1,x1) ;
save2pdf('my_figures',f0,f1)
瞧:
...
Output written on my_figures.pdf (2 pages, 169718 bytes).
Transcript written on my_figures.log.
答案 4 :(得分:0)
没有inbuild命令将所有数字保存在一个pdf中,有许多解决方法很难
为每个数字创建pdf文件,并使用易于获得的软件将它们组合起来。
有一个名为Export_fig(http://www.mathworks.com/matlabcentral/fileexchange/23629)的脚本可以保存单个pdf中的数字