July 02, 2007Matlabが吐くepsをdvipdfmxで処理すると切れる[Computer]
タイトルのとおりの現象が発生しました。最近諸事情によりMatlabを本格的に使い出したのですが、文章を書くのはやはりTeXなので、Matlabで作成した図はeps形式で保存し取り込んでいます。しかし、このMatlabが吐く図というのが曲者で、platexで処理をかけたdviでは図がしっかり読めるのですが、dvipdfmxでpdfにするとなぜが図の左側が欠けてしまうという現象がおきました。 図が出力できないMatlabなんぞ使い物にならないので、原因ならびに打開策をネットで調べてみました。最も簡単な打開策としては、イラストレータの形式であるaiでMatlabから図を出力し、イラストレータで図形を調整後、epsに変換するというものです。イラストレータからのepsは今までTeXならびにdvipdfmxを利用してきて取りこぼしたことがないので確実な方法であると思います。 さらに色々と調べてみた結果、海外の掲示板で『Inclusion of large eps files with dvipdfm』というのがひっかかりました。 実際にepstopdfを使う方法を試してみると、うまく図が表示されるようになりました。しかしpdfをincludegraphicsで取り込む際にはbbオプション、あるいはebbコマンドを利用してBoundingBoxを指定してあげる必要があります。これはepsファイルに比べて取り回しがしにくくなりますので、ここではさらにxpdfのpdftopsコマンドを利用して、変換したpdfをさらにepsに戻してみました。この戻したファイルでも確認したところ図が切れずに表示されることを確認しました。 コマンドで表すと以下の作業をすることで、Matlab epsのBoundingBoxを正しい値に修正することができました。 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 これでMatlabを安心して使うことができそうです。 コメント
アメリカはMatlabが超ポピュラーで、コンピュータ・サイエンスでもない限り、CやJAVAは疎まれてます。そんなわけで俺も毎日Matlabなんだけど、怪しさ満載だよね、このソフト。特に、Simulinkのモデルをクロス・コンパイルして、組み込みPCやマイコンを動かす"xPC"というのがあるんだけど、これが怪しいこと限りなし。デバックしようにも、どこがどういう仕組みで動いているのか全くわからんから、デバッグのしようがない。 Posted by: おの : July 3, 2007 04:00 AM>おの >あと大学のうちからMatlab漬けにしておいて、その後も搾取しようという企業戦略なんだろうね。 あーこれはその通りかもしれない。マックが子供セットのおもちゃに釣られて、不味いハンバーガーの味を覚えるような。 ブラックボックスは良し悪しだね。枠の範囲内に収まっていれば、これほど便利なものはない。制御の授業の宿題にMatlabは不可欠。一方で、すこし枠から出ようと思うと、これほど不便なものはない、って感じ。 あと、逆行列とか、特異値分解とか、決まりきった演算は、下手に自分で書くよりも、Matlabのアルゴリズムの方が断然高速。俺の書き方が悪いのか? でも、とりあえず行列のインデックスが1から始まるのはやめてほしいよね(笑 Posted by: おの : July 4, 2007 12:53 AM>おの すごい時間に起きてるな。これは朝?夜? よくJAVAのダイアログが出てくるけど、MATLABはJAVAの上で動いてるの?ならば遅いのもうなずける・・・ Posted by: おの : July 4, 2007 08:05 AM>おの 非常に助かる情報でした.ありがとうございました. Posted by: ツノの人 : February 17, 2008 03:50 AM>ツノの人さん コメントする
|
スポンサード リンク
|