1

私はMac(10.6.8)ユーザーです。計算結果をプロットし、プロットをpdfとして保存するためのMATLABコードを作成しました。私は「saveas」を使用します(以下の例を参照)。

このエラーが発生します:

??? 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')

関連するコードは次のとおりです。

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;

いくつかの詳細情報...これは先週私が最初に書いたときにうまくいきました!それ以来、10.6.7からMac OS 10.6.8にアップデートしたと思いますが、コードまたは使用しているMatlabのバージョン(R2009a)では他に何も変更されていません(メモリが非常に悪い場合を除く)。

また、「印刷」を使用するための同様の質問に関するいくつかの古い提案に出くわしました。私は使ってみました:

print(gcf、'ファイル名')。PDFを取得しましたが、PDF表示プログラムでは開きませんでした。私はこれが私がMacを使っているという事実に関係しているのではないかと思います(しかし確かにはわかりません)。Macでは動作しないもの(特に外部ファイルの操作に関連するもの)がいくつかあることに気づきました。

誰か助けていただければ幸いです。


更新:Mac用のGhostScriptを見つけて、Chrisが提案したようにインストールしました。残念ながら、それはうまくいきませんでした。私はフォーラムで、多くのMacユーザーが現在MATLABプロットに問題を抱えていることを読みました。これは、おそらくJavaに関連しています。先週、オペレーティングシステムのアップデート(OS X 10.6.8への)があり、それが問題の始まりでした。それ以前は私のコードは機能していました。

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

4

2 に答える 2

2

ここでの問題は、Matlab ではなく、GhostScript が死んでいることだと思います。その GS エラーの Google は、このような多くのページを表示します。これはまったく当てはまりますか?Matlab 以外で GS を使用すると機能しますか?

余談ですが、この FEX送信 export_figを見てください。それは私をよく扱ってくれました。最悪の場合、png に出力して後で PDF に変換することもできます。

于 2011-07-10T23:39:08.117 に答える
1

私ができる1つの推奨事項は、OS Xが理解できる別の形式を使用し、システムコールで結果を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

上記がうまくいかない場合、さらに別の方法として、Figure ウィンドウからビットマップを取得し、 を使用して書き込みますimwrite。 このメソッドは、およびの優れたフォント スケーリング機能の恩恵を受けないことに注意してください。このアプローチは、上記の変数がまだ存在することを前提としています。saveasprintim

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 の真の問題に対する回避策としてのみ意図されています

于 2011-07-15T03:46:50.853 に答える