もちっとメモ

もちっとメモ

もぐりのエンジニアが日々の中で試してみたことを気が向いたときに書き連ねていきます

Matlabで出力された画像が見切れる

サイズを指定して出力すればよい

サンプルコード(1024×768の場合)

    
        width = 1024;
        height = 768;
        set(gcf,'PaperPositionMode','auto')
        pos=get(gcf,'Position');
        pos(3)=width-1; % なぜか幅が1px増えるので対処
        pos(4)=height;
        set(gcf,'Position',pos);
        print('-r0','-dpng','fig.png');
    

参考URL:http://ichiro-maruta.blogspot.jp/2010/11/matlab.html 

Matlabで作成したepsやpngファイルの一部が見切れてしまうこの現象.
原因はMatlab epsのBoundingBox(ここまで図形が入っていることを示す領域)の値の一部が負値を取っているせいとのこと.
この状態の画像をdvipdfmx(Texでよく使うやつ)で開くと非負値しか正しく表示できないせいで見切れてしまうよう.
xpdfを入れてpdftopsコマンドを使用して
eps→pdf→eps
の順に変換すればepsからでも何とかできるよう.
でも,図を再出力できるのであれば,サイズを指定して出力するのが手っ取り早そう.
xpdf導入後の一括変換Shellコマンド

    
      #!/bin/sh
      for f in `find . -name "*.eps"`
      do 
       epstopdf --outfile=$f.pdf $f
       pdftops -eps $f.pdf $f.eps
       mv $f.eps $f
       rm $f.pdf
      done  
    

参考URL:
http://elehoody.blog.fc2.com/blog-entry-231.html
http://fenrir.naruoka.org/archives/000576.html