il和idl区别_我来给普及一下matlab、IDL、fortran神马的区别吧
我来给普及一下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神马的区别吧相关推荐
- mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- 静态方法与非静态方法的区别_程序员必看之ThinkPHP5中model与Db的区别
在ThinkPHP5的使用过程中,很多使用者刚接触到数据库操作时,不能很好调用相关的方法进行数据库的交互.下面就分享一下ThinkPHP5中Db与模型的区别 关于db与model的选择 使用DB方式是 ...
- 分区和分片的区别_数据库的分表、分库、分片和分区等区别
一.Sharding(分片) Sharding 是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题 ...
- mysql检索有什么区别_检索行时,MySQL中AND或OR运算符有什么区别?
AND,OR之间的区别在于,AND评估两个条件都必须为真,以使整体条件为真.OR求一个条件必须为真,以使整体条件为真. 让我们创建一个表-mysql> create table demo70 − ...
- for of 的用法区别_语法全解介词to和for的用法 如何简单区别使用
???在接下来几篇文章,杨老师为大家梳理一下英语中每个介词的含义和用法.就像我在课堂上经常讲的,介词某种意义上可以看成是英语的细胞,无处不在,让英语这门语言变得灵活多变.所以我们十分有必要对英语中的介 ...
- 图形驱动程序和显卡驱动什么区别_什么是核心显卡,核心显卡和集成显卡的区别...
随着整合时代的到来,如今很多处理器内部都集成了核心显卡,也就本文所说的核心显卡.那么,核心显卡是什么意思?它与我们过去所说的集成显卡又有哪些区别呢?这是很多菜鸟朋友所不够了解的,今天我们就来通俗易懂的 ...
- switch芯片和phy芯片的区别_感应式芯片卡CPU卡的FM1208-9和FM1208-10有什么区别,你知道吗?...
感应式CPU卡是目前芯片卡中安全系统较高的芯片,使用范围也较为广泛,但是这款CPU分为FM1208-9和FM1208-10,那你们知道分别代表什么意思呢?他们之间有什么不同呢? CPU白卡 FM是什么 ...
- 控制台应用和空项目有什么区别_互联网小程序的应用以及APP的应用有什么区别及发展...
随时移动互联网进入的千家万户,互联网的手机应用程序也渐渐的在市场上流行起来了.今天主要跟大家谈一下互联网小程序的应用以及APP的应用有什么区别以及未来的发展趋.未来会流行什么手机应用或者APP应用,我 ...
- pyHook pyHook3 区别_一般过去时态和现在完成时态之间到底有什么区别?通过一道语法题,帮你彻底讲清楚!...
有同学在群里问了一道关于"现在完成时态和一般过去时态之间区别"的语法题,摘录如下: There is someone knocking at the door. -- It mus ...
最新文章
- Octavia 项目加速 OpenStack LBaaS 落地大规模应用场景
- Python通过future处理并发
- 大厂实习生面试常问的一道算法题,LeetCode11 题目解析
- nodejs安装node-rsa遇到的问题及解决
- Impala架构和工作原理
- 查看android手机原生app包名的方法
- [Java Web – Maven – 1A]maven 3.3.3 for windows 配置(转)
- cpc卡内计费信息异常包括_今日头条信息流广告投放效果好吗?信息流广告计费方式怎么收费?...
- iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)
- html文件设置断点调试,断点调试
- 【NLP保姆级教程】手把手带你CNN文本分类(附代码)
- 前端笔记 | CSS浮动
- 数据库系统原理课程设计
- 如何用Python实现电影售票系统
- 一个简单的jxl文件上传功能
- 飞腾发布高可扩展芯片腾云S2500 开启多路服务新时代
- 运动目标检测之帧差法
- ChatGPT惊人语录大赏
- pom 备注_POMGH-25POMGH-25
- ERP-库存与存货-原料采购单