2014-01-31 2 views
0

-nodesktop 옵션을 사용하여 cronjob을 통해 기능을 실행할 때 matlab 플롯의 해상도에 문제가 있습니다. 이 함수는 여러 개의 숫자를 플롯하고 저장합니다 (인쇄 기능 사용). MATLAB 데스크탑에서 실행할 때 문제없이 지정된 해상도에 따라 플롯하고 저장합니다. 그러나 -nodesktop 옵션을 사용하여 cronjob을 실행하면 해상도가 매우 낮습니다 (낮음). 나는 또한 인쇄 해상도를 지정하려고했습니다-nodesktop 옵션을 사용할 때 Matlab이 매우 낮은 해상도를 표시합니다

fh = figure; 

set(fh,'Position',[0 0 1360 470]); 

plot(somedata); 

print(fh,'-dpng',figpath,'-painters'); 

참고 :

이것은 내가 현재 뭘하는지 본질적으로

print(fh,'-dpng',figpath,'-r300'); 

는하지만이 손상된 파일로 끝납니다. 이유가 확실하지 않습니다. 플롯이 다소 복잡한 경우, 폐허가되는 opengl을 디폴트로 할 수 있지만 어딘가에 읽혀지기 때문에 (어쨌든 옵션이 있거나 없으면, 같은 것을 알 수 있습니다.) -painters을 사용하고 있습니다.

가 나는 또한 시도했다 :

set(fh,'PaperPositionMode','auto') 

문제가 해결되지 않는다. 어떤 도움이 많이 주시면 감사하겠습니다

/usr/local/bin/matlab -nodesktop -r "startup; perform_plots; exit" 

:

cronjob를 다음 명령을 실행합니다!

+0

'get (fh)'의 출력을 게시 할 수 있습니까? – bdecaf

답변

1

문제점을 파악했습니다.

matlab를 cronjob으로 실행하면 DISPLAY 환경 변수가 설정되지 않았습니다. 결과적으로 MATLAB이 활용할 X 디스플레이가 없었습니다. 나는 그것이 어떻게 전혀 음모를 꾸미는 것을 계속했는지는 모르지만 매우 낮은 해상도로 그렇게했다.

해결 방법은 적절한 디스플레이를 직접 설정하는 것입니다. 예컨대 : 당신은 X 서버가없는 상자에서 실행하려는 경우

#!/bin/bash 

export DISPLAY=:1.0 

/usr/local/bin/matlab -nodesktop -r "startup; perform_plots; exit" 

, 당신은 Xvfb가 (X 가상 프레임 버퍼)를 사용하여 더미 X 서버를 설정할 수 있습니다. 또한 작업중인 작업과 별개의 디스플레이를 사용하면 작업하는 동안 무작위로 나타나는 플롯없이 백그라운드에서 작업을 실행할 수 있다는 장점이 있습니다.