简述idl功能?idl 与matlab有何异同点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述idl功能?idl 与matlab有何异同点相关的知识,希望对你有一定的参考价值。

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的矩阵,一切的一切都是矩阵。所以用m www.hbbz08.com atlab做计算的时候,需要思维上把需要循环的程序改成矩阵运算,这就是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了。
参考技术A 相同之处:

1.他们都是用于支持多种数据格式的可视化分析的工具,他们具有跨越平台、基于矩阵以及高级语言的特点。

2.他们同时都可以提供高度集成的环境。

3.对于GUIs,他们也都可以提供相应的工具和设计环境。

4.他们都可以提供面向对象的图形系统支持OpenGL的硬件图形加速。

5.他们都留有与其它语言的接口。等等...

但是,他们之间也同时存在着许多的不同,如下:

1.他们的产品定位不同。Matlab属于应用在实验室内的产品,他的重点放在了分析和精度计算上了。他的初衷设计也是基于较小的二维矩阵而进行的。而IDL的设计更多地来源于科学探索的视角。因为可视化是数据解译关键,所以IDL在图像处理、高级的3D图形等等上做了很多工作。并且,他对于海量的多维数据以及相应的应用开发提供了完备的环境。

2.工具箱的形式不一样。
这个特点是最显而易见的,IDL将所有提供的工具全部集成在环境内部,以函数或者其它的形式出现,而Matlab则归类出各种工具箱,让用户自选购买,具
有一定的灵活性,但这并不意味着他的每个工具箱的功能都很强大。比如,图像处理的工具箱就不及IDL。

3.IDL5.5之后则自动支持多线程(CPU)的计算,大大地提高了计算速度,并且无需在代码中体现,将低了编程难度。这在数据量不断增加的今天则成为IDL闪光卖点。Matlab还不能做到这一点。

4.数据类型的不同。
前面说过,Matlab注重计算精度,但同时这也成为他面对大数量计算的瓶颈。尽管IDL与Matlab支持的数据类型是一样的,但是IDL具有更加灵活的处理方式。

5.图形显示方式的不同。Matlab只支持面相对象的图形显示,而IDL则提供直接图形法的选择,因为有时候,直接图形法更加方便。另外,Matlab
不能支持真体数据的显示,这将对于包括医学影像(Medical
Image)、地质数据、大气以及环境科学方面的应用成为障碍。

6.应用开发与发布。这也是前面提到的产品定位问题,在此不再多讲。

7.网络解决方案。尽管Mathworks提供的CGI是基于网络的产品,但他只是类似ION Script,而不能提供ION
Java所能给予用户的解决方案。等等...本回答被提问者采纳

Python IDLE 的使用与调试

Python IDLE 是Python 安装包自带的集成开发环境。IDLE集成了Python 解释器、编辑器与调试器。适用于初学者了解Python 语法知识。
1、使用 Python IDLE 编辑Python
在Python 安装完成以后在开始菜单启动IDLE 编程环境。以后的很多Python 小程序我们都使用IDLE。

Python把程序的内容显示在 >>> 提示符 后面。在>>>后输入的值在Python内部是自动保存的,按下Enter 键自动显示。也可以通过print 函数输出。print(变量或表达式)的形式输出值函数输出。

Python IDLE 通过 File >> New File 新建源程序文件。在新建的编辑器输入以下内容 

n="今天是中秋节!!吃月饼了没有?"
print(n)
s="吃了。你呢?"
print(s)

然后通过File >> Save 保存文件

可以看出 Python 源文件的后缀名是py
最后运行保存的Python文件输出对话的内容

2、使用 Python IDLE 调试 Python
2.1 在Python Shell里操作开启Debug 模式

 

2.2 在源文件编辑器里设置断点,再次运行文件显示调试信息

以上是关于简述idl功能?idl 与matlab有何异同点的主要内容,如果未能解决你的问题,请参考以下文章

IDL简介

Typed Racket 中的打字功能与 Clojure 中的类类型功能有何异同?

那能运行Pythonidle的操作系统

CORBA IDL 与 RMI 的优缺点? [复制]

将netcdf数据最终转换为envi的标准格式或者tif格式。用matlab或者idl可以吗?

大话IDL编程之函数功能调用(envi_doitENVIRasterENVITask)