il和idl区别_我来给普及一下matlab、IDL、fortran神马的区别吧
我來給普及一下matlab、IDL、fortran神馬的區(qū)別吧
(2014-12-22 13:13:44)
標(biāo)簽:
matlab
idl
c
fortan
看到有人糾結(jié)這些東西,我來說說我的經(jīng)驗吧。不保證客觀,個人觀點而已,歡迎批判。
1.我要討論的是matlab、IDL、fortran、C這4件事。因為他們能夠共同地干一件事:計算。
2.實際上把他們四個放在一起說很詭異的,因為這完全不是一碼事,就有點像拿word和pdf作比較一樣不明真相。但是大家都這么說,那我也勉強(qiáng)比比看。
3.前兩者可以歸為一個子類,matlab和idl都是一種交互式、可視化語言系統(tǒng);后兩者算一類,是一種算法語言,有人說算高級語言,fortran我
同意,C在廣義上說可以直接對內(nèi)存和堆棧進(jìn)行操作,可能不如fortran級別高,但是針對科學(xué)計算的話,也可以勉強(qiáng)算高級語言。(補(bǔ)充提示:編程語言中
說的高級語言、中級語言、低級語言、機(jī)器語言的四個級別是針對人的理解里,越接近人的語言習(xí)慣的就是高級語言,越難以閱讀但是機(jī)器方便也讀的就是低級語
言。不是說高級語言比低級語言更好。)
4.先說畫圖:
matlab和IDL本身可以畫圖,這一點是fortran和C不具備的。雖然fortran和C也有圖形庫可以調(diào)用,但基本上很難用,這么說吧,就好比貓狗也有哺乳的功能,但是指望喝它們那點奶實在是。。。
所以fortran和C僅僅可以編程序做運(yùn)算,生成文件之后,再交給第三方軟件去畫圖。執(zhí)行畫圖任務(wù)的可以是origin、gnuplot、pgplot,甚至是matlab和IDL。
就matlab和IDL本身來說,圖像也有些區(qū)別。它們都有自己的一套圖形編碼系統(tǒng),都可以生成eps文件方便插入到latex論文中去,但是它們的
eps文件編碼方式很不一樣。以我的經(jīng)驗,同等分辨率的情況下,IDL的圖要小一些、輕巧很多。matlab的圖有點笨重。(不過說到輕
巧,gnuplot笑了。gnuplot畫的eps圖竟然可以用記事本直接打開,在里面修改文字,保存,關(guān)閉,再看,圖上的標(biāo)度就變了。)matlab的
圖有一個很嚴(yán)重的缺點,就是邊距設(shè)置有毛病,或者說與pdf本身的標(biāo)準(zhǔn)不一致。這就導(dǎo)致在linux下生成的latex文檔圖像有位移。不過也很容易糾
正,增加位置參數(shù)就行了。其實這倒是一個培養(yǎng)使用完善參數(shù)習(xí)慣的好辦法。IDL沒有這個問題,出來的圖很好,直接用就行,參數(shù)先天地與latex和pdf
標(biāo)準(zhǔn)是一致的。
在色彩方面,這里不多說了,詳見我過去的博文 http://blog.hippoh.org/archives/2002
他們的顏色定義不同,但是很容易相互調(diào)用,這很正常,就看你的需要了。我用了這么多年,覺得matlab和IDL的畫圖功能不分彼此,都很強(qiáng)大,各自有自己的特色,不能籠統(tǒng)說誰更強(qiáng)。
5.說說程序語言設(shè)計
其實fortran和C相比,效率可能相當(dāng)。針對超大規(guī)模的數(shù)值積分做測試的話會發(fā)現(xiàn),C要更快一點。但是fortran的語言更好懂一點,這就彌補(bǔ)了速
度的不足。因為買個大內(nèi)存現(xiàn)在很便宜,想讀懂程序卻不容易。但說fortran,做數(shù)值積分的確非常非常好用。所以在宇宙學(xué)、恒星物理上用的很多,這就是
為什么畢老師和張同杰都在用的原因。但是你指望一個處理恒星光譜的人用fortran就有點不給力了,這個后面再說。說到數(shù)值積分,其實說白了就是一個累
加,反反復(fù)復(fù)地做加法,做到頭大為止。這就需要用到循環(huán)甚至迭代,甚至遞歸。大循環(huán)的運(yùn)算是這兄弟倆的長相。用matlab和IDL做循環(huán),你會感覺想
死,他們根本就不是干這個用的。不過也有個小小的好處,如果你想看到每一步循環(huán)的過程的話,那就用matlab和IDL吧,保證你看得很清楚。但要是用
fortran和C,屏幕顯示一閃而過,啥也沒有了。
程序=算法+數(shù)據(jù)結(jié)構(gòu)
算法沒啥好說的,無論你用什么,算法是通用的,靠自己提高吧。數(shù)據(jù)結(jié)構(gòu)就是他們直接最大的區(qū)別了。matlab和IDL的精神都是矩陣,一切都是矩陣,一
個常數(shù)也是1*1的矩陣,一個向量是1*n的矩陣,一切的一切都是矩陣。所以用matlab做計算的時候,需要思維上把需要循環(huán)的程序改成矩陣運(yùn)算,這就
是matlab的長項了。IDL也是這樣,矩陣操作比matlab遜色,但也是基于矩陣的。我的經(jīng)驗覺得IDL的矩陣操作更適合對大量數(shù)據(jù)文件的讀取。
fortran雖然也可以定義向量和矩陣,但是你知道,這很恐怖的,比如向量的大小在計算過程中不能改變,這就很傷心(這也是造成運(yùn)算速度快的原因之一)。而matlab可以進(jìn)行類似這樣的
A=[A; A] 這就方便多了。
6.基本用途
終于說到關(guān)鍵的了。我接觸的大量做天文的人,都絕對不僅僅只會用一種東西,因為太不夠了。但是不同的工具真的有它的獨(dú)到之處和用途。比如做觀測的話,原始
觀測數(shù)據(jù)的處理raw
data要用IDL很方便。IDL提供一個astro包,專門針對fits文件也有很好的函數(shù),效率也不低。無論是CCD拍一批測光,還是光譜抽取,用
IDL再方便不過了(如果你不想折騰天煞的IRAF的話)。舉個例子吧,08年春天張超同學(xué)需要把針對同一個天區(qū)的上百張測光底片做處理,然后找到某顆星
的星等變化曲線。問題在于這些底片都并不是完全重合的,他們的位置都有偏差。所以首先需要讓這些底片上的同樣的星重合在一起再說。這件事我倒是想問問,用
fortran和C咋玩?恐怕只能攤手了。IDL就有很好的辦法。
所以我們普遍認(rèn)為,處理最原始的觀測數(shù)據(jù),IDL推薦!
得到處理之后的結(jié)果了,下一步就是研究這些數(shù)據(jù)的內(nèi)在聯(lián)系,看看曲線圖啊,看看相關(guān)性分析啊,做做統(tǒng)計啊,擬合擬合模型啊,這些事也很重要,這些工作,matlab推薦!
那么如果你要做的是理論本身。你需要從無到有構(gòu)建一個框架,肯定要用到一些經(jīng)驗公式的積分、迭代神馬的,這就需要fortran或者C語言了。比如我用的
銀河系模型的生成就是C寫的。而星表是fortran寫的。但我用觀測數(shù)據(jù)和模型作比較做擬合的時候,就只有靠IDL和matlab了。
7.小結(jié)。
任何一種東西都很有用途,只不過用途和特點不一樣。都忽視不得。學(xué)天文的話,想做好,多會一些是很有必要的。另外要注意,linux將來很有用,所以上面那些東西在linux下的表現(xiàn)也要引起注意。
最后補(bǔ)充一個matlab的優(yōu)點:程序最后不用寫end。
轉(zhuǎn)自蛋蛋網(wǎng)?原帖地址http://www.oiegg.com/viewthread.php?tid=923862
分享:
喜歡
0
贈金筆
加載中,請稍候......
評論加載中,請稍候...
發(fā)評論
登錄名: 密碼: 找回密碼 注冊記住登錄狀態(tài)
昵???稱:
評論并轉(zhuǎn)載此博文
發(fā)評論
以上網(wǎng)友發(fā)言只代表其個人觀點,不代表新浪網(wǎng)的觀點或立場。
總結(jié)
以上是生活随笔為你收集整理的il和idl区别_我来给普及一下matlab、IDL、fortran神马的区别吧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习模型 知乎_机器学习中有哪些模型
- 下一篇: centos io 查看程序_cento