2011-07-10 10 views
1

私はMac(10.6.8)のユーザーです。私は、計算結果をプロットし、そのプロットをpdfsとして保存するためのMATLABコードを書いています。私は "saveas"を使用します(下記の例を参照)。MATLAB newbie:「saveas」を使用してプロットをPDFファイルとして保存する際のエラー

私はこのエラーを取得する:

calculationResultsPath = '/Me/Projects/ThisProject'; 
calculationResultsDirectory   = strcat(calculationResultsPath,'MATLABProcessedResults'); 
mkdir(calculationResultsDirectory); 

% ...Code for importing results to be plotted from external files (works fine)... 

% ...Code for plotting (works fine)... I get the figures I want. 

% The problem is: 
saveFigTo1 = strcat(resultsDirectory,'/majorsMgO.pdf') 
saveas(gcf,saveFigTo1, 'pdf') 
hold off 
pause 
clf; 

私が最初にそれを書いたとき、これは先週、うまく働いた...いくつかの詳細情報:ここでは

??? Error using ==> print at 325 
Problem converting PostScript. System returned error: -1.Failed to convert to output format; Ghostscript status: -100.**** Unable to open the initial device, quitting. 

Error in ==> saveas at 155 
     print(h, name, ['-d' dev{i}]) 

Error in ==> Results_processor at 1219 
saveas(gcf,saveFigTo1, 'pdf') 

はコードの関連作品です!それ以来、私は10.6.7からMac OS 10.6.8にアップデートしたと思いますが、私のコードやMatlabのバージョン(R2009a)で変更されたものはありません。

また、「プリント」を使用するための同様の質問について、いくつかの古い提案がありました。私は使ってみました:

print(gcf、 'filename')。私はpdfを入手しましたが、pdf閲覧プログラムでは開けませんでした。私はこれがMacを使用しているという事実に関連していると私は推測しています(しかし、わかりません)。私は、Mac上で動作しないいくつかのもの(特に外部ファイル操作に関連するもの)があることに気付きました。

誰かが助けてくれたら、私はとても感謝しています。


アップデート: 私はMac用のGhostscriptを発見し、クリスが示唆されているように、それをインストールしました。残念ながら、それは動作しませんでした。私は、多くのMacユーザーが現在MATLABプロットに関する問題を抱えているフォーラムを読んでいます。おそらくjavaに関連しています。先週、(OS X 10.6.8への)オペレーティングシステムアップデートがあった。それは問題が始まったときである。私のコードはそれ以前に働いていました。

まだ解決策が見つかりませんでしたが、私はMATLABの人々にはどちらもあるとは思わないので、誰もがsaveasを使わずにプロットを保存する方法についての提案を持っていれば、聞いてみたいと思います。 "print"コマンドは私のためには機能しません - 私が開くことができないPDFを生成します。

答えて

1

つの推薦は、次の作品かどうかを確認してくださいOS Xが理解異なるフォーマットを使用し、単にシステムコール

でPDFに結果を変換することですもう1つの方法は、Figureウィンドウからビットマップを取得し、imwriteを使用してそれを書き込むことです。 注:この方法は、saveasprintの素敵なフォントスケーリング機能のメリットがありません。このアプローチは、上記のim変数がまだ存在することを前提としています。

imagesc(im); colormap gray; 

% Set the border color to white 
set(h,'Color',[1 1 1]); 

% Get the image in the figure 
frame = getframe(gcf); 
imout = frame.cdata; 

% on OS X, the stretch window image 
% appears in the bottom right corner 
% of the image. Remove it. 
imout = imout(10:end-9,10:end-9,:); 

% Write the image out to a lossless tif 
imwrite(imout,'test.tif','tif','Compression','none') 

上記のようにtifsをpdfファイルに変換することができます。図形の質は図形の大きさに依存します。ほとんどの場合、私はsaveasがフォントをうまく処理するので、この2番目の方法は使用しません。 getframeを使用することは、saveasの真の問題の回避策としてのみ意味されます。

+0

提案、ephsmithに感謝します。 imshow(im)コマンドはイメージを生成しますが、ファイル "test.tif"と "test.pdf"は両方とも空です。 – Ant

+0

それを聞いて申し訳ありません。私はあなたの特定のセットアップでテストすることができません。私はOS X 10.6.8で2010aを実行しています。 – ephsmith

+0

Figureウィンドウからの直接保存は正しく機能しますか? – ephsmith

2

ここでの問題はゴーストスクリプトが死んでいることであり、あまりMatlabではないと思います。そのGSエラーのGoogleは、多くpagesthisのようになります。これはすべて適用可能ですか? Matlabの外でGSを使用すると動作しますか?

脇に、このFEX提出物export_figをご覧ください。それは私をよく扱いました。最悪の場合、pngに出力して後でPDFに変換できます。

% Load a test image 
im = imread('cameraman.tif'); 

imshow(im); % display the image 

saveas(gcf,'test.tif','tif'); 

% convert to pdf using a syscall to cupsfilter 
!cupsfilter test.tif > test.pdf 2> /dev/null 

% open the file with your default pdf viewer 
!open test.pdf 

を上記の場合:私は作ることができます

+0

ありがとう、クリス。あなたがそれを述べるまで私はGhostScriptについて聞いたこともありませんでした。私はそれを調べます! – Ant

関連する問題