關於Mathematica圖像輸出的一些細節問題?

感謝@孫挺,@Zixuan Zhao等朋友的回答,受益匪淺!在下涉入mma不深,還有些問題向各位請教:

1,MMA系統默認的ImageSize是多大?有時候ImageSize和ImageResolution需要搭配,我不知道原始的ImageSize應該是多大呢?

2,PlotPoints 和ImageResolution有什麼關聯?PlotPoints很大是不是不能理解成ImageResolution很大?

3,Manipulate畫的帶有參數控制項的圖能不能弄成一個可以與mma無關的exe文件?類似於Matlab的GUI界面?我理解是不可以,是不是一點辦法都沒有?比如若要做一個獨立於mma的軟體,輸入某些參數可以得到某些圖形,在mma裡面很方便,脫離mma就不行了嗎?這樣我認為對MMA就比較浪費了啊。。

再次感謝!


Q1,MMA系統默認的ImageSize是多大?有時候ImageSize和ImageResolution需要搭配,我不知道原始的ImageSize應該是多大呢?

A1: Mathematica默認的ImageSize是automatic,是會根據notebook的大小等自動調整的。

ImageResolution默認是72 dpi,一般300為印刷質量,屏幕的話一般100以上就可以了。

Q2,PlotPoints 和ImageResolution有什麼關聯?PlotPoints很大是不是不能理解成ImageResolution很大?

A2: PlotPoints和ImageResolution沒有關係。不能。

PlotPoints可以理解為採樣率,因為繪圖本質上還是「離散」的,是對原有解析式採樣後離散用基本的graphics primitives組合的對象。你看看PlotPoints的幫助就明白了。

Q3,Manipulate畫的帶有參數控制項的圖能不能弄成一個可以與mma無關的exe文件?類似於Matlab的GUI界面?我理解是不可以,是不是一點辦法都沒有?比如若要做一個獨立於mma的軟體,輸入某些參數可以得到某些圖形,在mma裡面很方便,脫離mma就不行了嗎?這樣我認為對MMA就比較浪費了啊。。

A3: 不能編譯為exe,但是可以輸出為Mathematica的CDF文件,在操作系統裝了Mathematica或者免費的CDF player情況下都可以運行。現在v10之後,可以發布到雲端的對象,也擴展了其獨立運行性。你看一看看有關的幫助。


謝邀。

1.這個問題我不知道確切的答案。調查默認Option的方法如下,(比如Plot):

Options[Plot]

(輸出過長,不複製到這裡)。可以看到,ImageSize -&> Automatic。

文檔中這樣寫:

Automatic

represents an option or other value that is to be chosen automatically by a built-in function.

好像沒什麼幫助。

2.PlotPoints這個選項是選擇初始點的個數,選擇的越多圖像本身越精確;ImageResolution是導出時的解析度,是兩個概念。具體的區別詳見下圖對比:

Export["1.png", Plot[Sin[1/x], {x, -0.1, 0.1}, PlotPoints -&> 2],
ImageResolution -&> 400]

非常清晰但是圖像都是折線。

Export["2.png", Plot[Sin[1/x], {x, -0.1, 0.1}, PlotPoints -&> 50],
ImageResolution -&> 50]

圖片本身模糊但圖像較好。3.和「想用MMA做獨立可執行文件」最接近的事情就是CDF。你說的Manipulate做出一些東西,這裡Wolfram Demonstrations Project 有很多,都是以CDF的方式發布,並且代碼可見。只要對方安裝了免費的Wolfram CDF Player,你寫的Manipulate就可以在其電腦上運行。不過操作僅限於移動一下slider,選一下checkbox之類的,不能輸入。可以輸入的只有EnterpriseCDF才可以,不過那個東西價格高的簡直把美元換成RMB都買不起……詳情見這裡Wolfram CDF Player Pro: Comparing CDF Player, CDF Player Pro, and Mathematica 所以說自己用MMA不錯,如果要是大範圍發布希么軟體,還是用其他的開源科學計算語言較好。就算像是那種Manipulate的東西,很多人也不願意裝那個CDFPlayer,畢竟幾百MB。


推薦閱讀:

怎麼將 Mathematica 的動態輸出成 GIF?
Mathematica中如何對矩陣內元素並行計算?
如何用最簡單的代碼說明Mathematica裡面的各個水平層次?
Mathematica中,調bug時,能否實現如同Matlab一樣單步執行停止每一步看每一步的結果?
Mathematica或matlab怎麼求解含有復變數的方程?

TAG:WolframMathematica |