CentOS 6中MATLAB print函數“所見非所得”bug的解決方案

來源:互聯網
上載者:User

標籤:

0 系統配置+軟體版本

主機:Dell optiplex 390 MT (i5)

系統+軟體:CentOS 6.5 x64, Matlab R2012, R2013

系統+軟體:CentOS 6.7 x64, Matlab R2014
兩種組合均存在print函數列印結果不正確的問題。

1 問題描述

正常來講,print會將映像控制代碼所指向的圖片按“所見即所得 (WYSIWYG)”的方式列印出來,包括線條寬度和字型大小等屬性。

由於CentOS內建的顯卡驅動無法很好地控制和使用板載的Nvidia顯卡,無論*.fig檔案中設定了怎樣的字型大小,列印出來的JPEG圖片都是特別特別小的字型,而*.fig中的設定完全不同。

從CentOS 6..4一路升級到CentOS 6.7的過程中,這個問題一直沒有尋找到真正原因,直到最近購買了新顯卡,費勁裝上了它的Nvidia驅動,重新使用這個print函數製圖的時候,才發現真正解決了“所見即所得 (WYSIWYG)”的問題。

clf;x=1:100; y=x;plot(x,y,‘b.‘); hold on;; plot(x,sin(x),‘g-.‘);xlabel(‘test x‘);ylabel(‘test y‘);set(findall(gcf,‘Type‘,‘text‘),‘FontSize‘,20,‘FontName‘,‘Timew New Roman‘); % 將文字設定為20號Times New Roman字型set(gcf,‘PaperPositionMode‘,‘auto‘);print(gcf,‘-djpeg‘,‘-r600‘,‘test1.jpg‘);set(findall(gcf,‘Type‘,‘text‘),‘FontSize‘,12,‘FontName‘,‘Timew New Roman‘); % 將文字設定為12號Times New Roman字型set(gcf,‘PaperPositionMode‘,‘auto‘);print(gcf,‘-djpeg‘,‘-r600‘,‘test2.jpg‘);

可以用上述代碼測試,看成圖的結果是否滿足“所見即所得 (WYSIWYG)”的效果。如果滿足,後文可直接略過。

 

2 解決辦法2.1 顯卡驅動識別

CentOS系統預設是內建顯卡驅動程式的,只是它的驅動效果並不好。如果你在matlab命令視窗輸入‘opengl info‘命令,得到類似如下結果,可能就需要為獨顯單獨安裝相應的驅動程式了。 

% centOS 6.5, Matlab R2013a, 系統內建的顯卡驅動,Nvidia顯卡的驅動未專門安裝>> opengl info                          Version: ‘2.1 Mesa 10.4.3‘                           Vendor: ‘Mesa Project‘                         Renderer: ‘Software Rasterizer‘                   MaxTextureSize: 16384                           Visual: ‘Visual 0x104, (RGBA 32 bits (8 8 8 8), Z depth 24 bits, H...‘                         Software: ‘false‘        SupportsGraphicsSmoothing: 0    SupportsDepthPeelTransparency: 1       SupportsAlignVertexCenters: 0                       Extensions: {150x1 cell}               MaxFrameBufferSize: 16384

 

 系統內建的顯卡驅動,由Matlab R2013a返回的opengl資訊,沒有看到Nvidia顯卡的名字,不可以使用硬體渲染,只能使用軟體(光柵化)渲染器。

 

2.2 單獨安裝適配的Nvidia顯卡驅動之後

安裝Nvidia顯卡驅動,具體過程可以參見我的另一篇部落格《在CentOS 6.7中安裝Nvidia GT730的手記》。文中提到不同的安裝方法,如果在設定過程中遇到重啟後卡在綠屏的問題,可以嘗試部落格中的操作過程。至於為什麼會綠屏,我也不知道。。。

 

安裝好顯卡驅動以後,Matlab R2014b返回的opengl資訊,顯示已經載入了一塊名為‘GeForce GT 730/PCIe/SSE2‘的顯卡,可以使用硬體渲染和硬體加速功能。

% centOS 6.7, Matlab R2014b, 專門安裝Nvidia顯卡驅動
>> opengl info Version: ‘4.5.0 NVIDIA 352.30‘ Vendor: ‘NVIDIA Corporation‘ Renderer: ‘GeForce GT 730/PCIe/SSE2‘ MaxTextureSize: 16384 Visual: ‘Visual 0x27, (RGBA 32 bits (8 8 8 8), Z depth 24 bits, Hardware acceleration, Double buffer, ...‘ Software: ‘false‘ SupportsGraphicsSmoothing: 1 SupportsDepthPeelTransparency: 1 SupportsAlignVertexCenters: 1 Extensions: {316x1 cell} MaxFrameBufferSize: 16384

 

3 測試

 最後,再用第1小節中的繪圖命令作簡單的測試,隨著字型大小的調整,產生的*.jpg檔案中,字型也應當隨著變化的,實現了真正的“所見即所得 (WYSIWYG)”。

至此,print命令的bug終於解決了!

 

4 參考資料

[1] http://www.cnblogs.com/snake553/p/4941163.html     《在CentOS 6.7中安裝Nvidia GT730的手記》

 

 

CentOS 6中MATLAB print函數“所見非所得”bug的解決方案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.