我来给普及一下matlab、IDL、fortran神马的区别吧

(2014-12-22 13:13:44)

标签:

matlab

idl

c

fortan

看到有人纠结这些东西,我来说说我的经验吧。不保证客观,个人观点而已,欢迎批判。

1.我要讨论的是matlab、IDL、fortran、C这4件事。因为他们能够共同地干一件事:计算。

2.实际上把他们四个放在一起说很诡异的,因为这完全不是一码事,就有点像拿word和pdf作比较一样不明真相。但是大家都这么说,那我也勉强比比看。

3.前两者可以归为一个子类,matlab和idl都是一种交互式、可视化语言系统;后两者算一类,是一种算法语言,有人说算高级语言,fortran我

同意,C在广义上说可以直接对内存和堆栈进行操作,可能不如fortran级别高,但是针对科学计算的话,也可以勉强算高级语言。(补充提示:编程语言中

说的高级语言、中级语言、低级语言、机器语言的四个级别是针对人的理解里,越接近人的语言习惯的就是高级语言,越难以阅读但是机器方便也读的就是低级语

言。不是说高级语言比低级语言更好。)

4.先说画图:

matlab和IDL本身可以画图,这一点是fortran和C不具备的。虽然fortran和C也有图形库可以调用,但基本上很难用,这么说吧,就好比猫狗也有哺乳的功能,但是指望喝它们那点奶实在是。。。

所以fortran和C仅仅可以编程序做运算,生成文件之后,再交给第三方软件去画图。执行画图任务的可以是origin、gnuplot、pgplot,甚至是matlab和IDL。

就matlab和IDL本身来说,图像也有些区别。它们都有自己的一套图形编码系统,都可以生成eps文件方便插入到latex论文中去,但是它们的

eps文件编码方式很不一样。以我的经验,同等分辨率的情况下,IDL的图要小一些、轻巧很多。matlab的图有点笨重。(不过说到轻

巧,gnuplot笑了。gnuplot画的eps图竟然可以用记事本直接打开,在里面修改文字,保存,关闭,再看,图上的标度就变了。)matlab的

图有一个很严重的缺点,就是边距设置有毛病,或者说与pdf本身的标准不一致。这就导致在linux下生成的latex文档图像有位移。不过也很容易纠

正,增加位置参数就行了。其实这倒是一个培养使用完善参数习惯的好办法。IDL没有这个问题,出来的图很好,直接用就行,参数先天地与latex和pdf

标准是一致的。

在色彩方面,这里不多说了,详见我过去的博文 http://blog.hippoh.org/archives/2002

他们的颜色定义不同,但是很容易相互调用,这很正常,就看你的需要了。我用了这么多年,觉得matlab和IDL的画图功能不分彼此,都很强大,各自有自己的特色,不能笼统说谁更强。

5.说说程序语言设计

其实fortran和C相比,效率可能相当。针对超大规模的数值积分做测试的话会发现,C要更快一点。但是fortran的语言更好懂一点,这就弥补了速

度的不足。因为买个大内存现在很便宜,想读懂程序却不容易。但说fortran,做数值积分的确非常非常好用。所以在宇宙学、恒星物理上用的很多,这就是

为什么毕老师和张同杰都在用的原因。但是你指望一个处理恒星光谱的人用fortran就有点不给力了,这个后面再说。说到数值积分,其实说白了就是一个累

加,反反复复地做加法,做到头大为止。这就需要用到循环甚至迭代,甚至递归。大循环的运算是这兄弟俩的长相。用matlab和IDL做循环,你会感觉想

死,他们根本就不是干这个用的。不过也有个小小的好处,如果你想看到每一步循环的过程的话,那就用matlab和IDL吧,保证你看得很清楚。但要是用

fortran和C,屏幕显示一闪而过,啥也没有了。

程序=算法+数据结构

算法没啥好说的,无论你用什么,算法是通用的,靠自己提高吧。数据结构就是他们直接最大的区别了。matlab和IDL的精神都是矩阵,一切都是矩阵,一

个常数也是1*1的矩阵,一个向量是1*n的矩阵,一切的一切都是矩阵。所以用matlab做计算的时候,需要思维上把需要循环的程序改成矩阵运算,这就

是matlab的长项了。IDL也是这样,矩阵操作比matlab逊色,但也是基于矩阵的。我的经验觉得IDL的矩阵操作更适合对大量数据文件的读取。

fortran虽然也可以定义向量和矩阵,但是你知道,这很恐怖的,比如向量的大小在计算过程中不能改变,这就很伤心(这也是造成运算速度快的原因之一)。而matlab可以进行类似这样的

A=[A; A] 这就方便多了。

6.基本用途

终于说到关键的了。我接触的大量做天文的人,都绝对不仅仅只会用一种东西,因为太不够了。但是不同的工具真的有它的独到之处和用途。比如做观测的话,原始

观测数据的处理raw

data要用IDL很方便。IDL提供一个astro包,专门针对fits文件也有很好的函数,效率也不低。无论是CCD拍一批测光,还是光谱抽取,用

IDL再方便不过了(如果你不想折腾天煞的IRAF的话)。举个例子吧,08年春天张超同学需要把针对同一个天区的上百张测光底片做处理,然后找到某颗星

的星等变化曲线。问题在于这些底片都并不是完全重合的,他们的位置都有偏差。所以首先需要让这些底片上的同样的星重合在一起再说。这件事我倒是想问问,用

fortran和C咋玩?恐怕只能摊手了。IDL就有很好的办法。

所以我们普遍认为,处理最原始的观测数据,IDL推荐!

得到处理之后的结果了,下一步就是研究这些数据的内在联系,看看曲线图啊,看看相关性分析啊,做做统计啊,拟合拟合模型啊,这些事也很重要,这些工作,matlab推荐!

那么如果你要做的是理论本身。你需要从无到有构建一个框架,肯定要用到一些经验公式的积分、迭代神马的,这就需要fortran或者C语言了。比如我用的

银河系模型的生成就是C写的。而星表是fortran写的。但我用观测数据和模型作比较做拟合的时候,就只有靠IDL和matlab了。

7.小结。

任何一种东西都很有用途,只不过用途和特点不一样。都忽视不得。学天文的话,想做好,多会一些是很有必要的。另外要注意,linux将来很有用,所以上面那些东西在linux下的表现也要引起注意。

最后补充一个matlab的优点:程序最后不用写end。

转自蛋蛋网 原帖地址http://www.oiegg.com/viewthread.php?tid=923862

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

il和idl区别_我来给普及一下matlab、IDL、fortran神马的区别吧相关推荐

  1. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  2. 静态方法与非静态方法的区别_程序员必看之ThinkPHP5中model与Db的区别

    在ThinkPHP5的使用过程中,很多使用者刚接触到数据库操作时,不能很好调用相关的方法进行数据库的交互.下面就分享一下ThinkPHP5中Db与模型的区别 关于db与model的选择 使用DB方式是 ...

  3. 分区和分片的区别_数据库的分表、分库、分片和分区等区别

    一.Sharding(分片) Sharding 是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题 ...

  4. mysql检索有什么区别_检索行时,MySQL中AND或OR运算符有什么区别?

    AND,OR之间的区别在于,AND评估两个条件都必须为真,以使整体条件为真.OR求一个条件必须为真,以使整体条件为真. 让我们创建一个表-mysql> create table demo70 − ...

  5. for of 的用法区别_语法全解介词to和for的用法 如何简单区别使用

    ???在接下来几篇文章,杨老师为大家梳理一下英语中每个介词的含义和用法.就像我在课堂上经常讲的,介词某种意义上可以看成是英语的细胞,无处不在,让英语这门语言变得灵活多变.所以我们十分有必要对英语中的介 ...

  6. 图形驱动程序和显卡驱动什么区别_什么是核心显卡,核心显卡和集成显卡的区别...

    随着整合时代的到来,如今很多处理器内部都集成了核心显卡,也就本文所说的核心显卡.那么,核心显卡是什么意思?它与我们过去所说的集成显卡又有哪些区别呢?这是很多菜鸟朋友所不够了解的,今天我们就来通俗易懂的 ...

  7. switch芯片和phy芯片的区别_感应式芯片卡CPU卡的FM1208-9和FM1208-10有什么区别,你知道吗?...

    感应式CPU卡是目前芯片卡中安全系统较高的芯片,使用范围也较为广泛,但是这款CPU分为FM1208-9和FM1208-10,那你们知道分别代表什么意思呢?他们之间有什么不同呢? CPU白卡 FM是什么 ...

  8. 控制台应用和空项目有什么区别_互联网小程序的应用以及APP的应用有什么区别及发展...

    随时移动互联网进入的千家万户,互联网的手机应用程序也渐渐的在市场上流行起来了.今天主要跟大家谈一下互联网小程序的应用以及APP的应用有什么区别以及未来的发展趋.未来会流行什么手机应用或者APP应用,我 ...

  9. pyHook pyHook3 区别_一般过去时态和现在完成时态之间到底有什么区别?通过一道语法题,帮你彻底讲清楚!...

    有同学在群里问了一道关于"现在完成时态和一般过去时态之间区别"的语法题,摘录如下: There is someone knocking at the door. -- It mus ...

最新文章

  1. Octavia 项目加速 OpenStack LBaaS 落地大规模应用场景
  2. Python通过future处理并发
  3. 大厂实习生面试常问的一道算法题,LeetCode11 题目解析
  4. nodejs安装node-rsa遇到的问题及解决
  5. Impala架构和工作原理
  6. 查看android手机原生app包名的方法
  7. [Java Web – Maven – 1A]maven 3.3.3 for windows 配置(转)
  8. cpc卡内计费信息异常包括_今日头条信息流广告投放效果好吗?信息流广告计费方式怎么收费?...
  9. iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)
  10. html文件设置断点调试,断点调试
  11. 【NLP保姆级教程】手把手带你CNN文本分类(附代码)
  12. 前端笔记 | CSS浮动
  13. 数据库系统原理课程设计
  14. 如何用Python实现电影售票系统
  15. 一个简单的jxl文件上传功能
  16. 飞腾发布高可扩展芯片腾云S2500 开启多路服务新时代
  17. 运动目标检测之帧差法
  18. ChatGPT惊人语录大赏
  19. pom 备注_POMGH-25POMGH-25
  20. ERP-库存与存货-原料采购单

热门文章

  1. 字节跳动高频算法题TOP100
  2. 线程池,这一篇或许就够了
  3. 粗浅看 java反射机制
  4. Java集合框架源码剖析:LinkedHashSet 和 LinkedHashMap
  5. 性能测试vs负载测试vs压力测试
  6. 退役-兵巨臂锻炼计划
  7. 如果有人问你关系数据库的工作原理,叫他看这篇文章How does a relational database work
  8. 跟我一起写 Makefile(六)
  9. 鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)
  10. 大话设计模式(八 用“策略模式”是一种好策略)