7

有没有办法做到这一点?

我知道如何使用 saveas ( saveas(1, filename, 'pdf');) 将一个图形保存到 PDF 文件,但是可以添加多个吗?所以像 ( saveas(1,2,3) filename, 'pdf'));.

谢谢

4

5 回答 5

4

我不这么认为——你需要以某种方式增加文件名。我会使用类似的东西:

for ii=1:3
    saveas(ii,[filename '-' num2str(ii)],'pdf)
end

附带说明一下,在提交的手稿中包含 matlab 生成的 pdf 文件时,我曾多次遇到困难。我目前的解决方案是生成 eps 文件并使用 shell 脚本进行转换。

r/

于 2013-01-07T01:12:35.363 回答
3

回复晚了,但我想补充一点,您可以使用发布命令并发布为 pdf。使用绘图命令创建一个 m 文件“myfile.m”,如

plot(x1,y1);
plot(x2,y2);

然后使用运行此文件

publish('myfile.m', 'pdf')

这应该给你你想要的。

于 2013-10-04T11:22:33.853 回答
3

我认为可能值得指出的是,您的目标行为可以使用hgsaveand获得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));
于 2013-01-07T05:59:33.890 回答
3

MATLAB-PDFLaTeX 解决方案

publish正如其他答案所指出的,使用 MATLAB 的命令是一个很好的解决方案。如果您正在寻找对不同图形组合方式的更多控制,另一种解决方案是pdflatex将图形编译成单个 PDF。

  1. 将图形打印为 PDF
  2. 生成LaTeX包含数字的代码
  3. 编译PDFLaTeX

下面是一个概念证明,它将文件名作为 achar和一些function_handles 并生成包含这些数字的 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.
于 2015-08-21T22:25:00.600 回答
0

没有内置命令可以将所有图形保存在一个 pdf 中,有很多解决方法很难

  1. 为每个图形创建 pdf 文件,并使用易于使用的软件将它们组合起来。

  2. 有一个名为 Export_fig ( http://www.mathworks.com/matlabcentral/fileexchange/23629 ) 的脚本可以将数字保存为单个 pdf

  3. 以 .ps 格式保存所有数字并将 .ps 转换为 PDF(我觉得很容易使用)。fname = 'test.ps'; 打印('-dpsc2',fname,'-f1')打印('-dpsc2',fname,'-append','-f2')
于 2015-08-19T07:07:35.747 回答