MATLAB将多个数字保存为PDF

时间:2013-01-07 01:08:42

标签: matlab

有没有办法做到这一点?

我知道如何使用saveas(saveas(1, filename, 'pdf');)将一个数字保存为PDF文件,但是可以添加倍数吗?就像(saveas(1,2,3) filename, 'pdf'));

一样

由于

5 个答案:

答案 0 :(得分:3)

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

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

作为旁注,我在将matlab生成的pdf包含在稿件提交中时遇到了一些困难。我目前的解决方案是生成eps文件并使用shell脚本进行转换。

R /

答案 1 :(得分:3)

我认为值得指出的是,您可以使用hgsavehgload来获取您所针对的行为,但前提是您很乐意使用.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-PDFLaTeX解决方案

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

  1. 将数字打印为PDF
  2. 生成LaTeX代码,其中包含数字
  3. 使用PDFLaTeX
  4. 进行编译

    以下是概念证明,它将文件名称作为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中,有许多解决方法很难

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

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

  3. 以.ps格式保存所有数据并将.ps转换为PDF(我觉得很容易使用)。 fname =' test.ps&#39 ;; 打印(' -dpsc2',fname,' -f1') 打印(' -dpsc2',fname,' -append',' -f2')