风花雪月 发表于 2008-9-16 11:19

IDL与Matlab的比较

IDL和Matlab从客观上讲在许多方面应该是两个非常接近的产品,并且,对于国内的IDL初学者,他们也习惯性地把IDL和Matlab做以比较。由于他们对这两个产品都不是很熟悉,做成各种各样理解上的偏差,我在这里给大家做一个相对客观的比较。对于科学数据他们都可以提供全功能的分析与显示的环境。但是,他们之间的不同使得IDL更加适合应用开发者以及那些利用影像、海量数据的科研人员以此从事发现有用信息、做出医学诊断和得到科学决策。

首先,让我们先看一下他们的相同之处:
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所能给予用户的解决方案。等等...

总之,我最后总结几点Matlab与IDL比较之后的弱势:
1. 强制性的双精度计算,有时使得Matlab在计算时内存的消耗达到实际数据精度的8倍,这就造成资源浪费的同时,束缚了处理数据量的能力。
2. 琳琅满目的工具箱成为Matlab在市场上的双刃剑。
3. Matlab在计算速度和内存的管理,仍然存在着一定的问题。
4. Matlab不支持多线程(CPU)的计算方式。
5. 当Matlab应用于实际工程的时候,困扰他的是数据量的问题,到目前为止,IDL在运行2G的雷达数据时没有问题。
6. 就图像处理而言,IDL仍然是优于Matlab的工具。
7. 对于外部语言的接口,IDL则有着更为广泛和方便的工具,无论是C、C++、Fortran或者ActiveX控件等等。

风花雪月 发表于 2008-9-16 11:20

IDL简介

美国RSI公司(现并入ittvis--编者注)的旗舰产品--IDL(Interactive Data Language)交互式数据语言是进行二维及多维数据可视化表现、分析及应用开发的理想软件工具。作为面向矩阵、语法简单的第四代可视化语言,IDL致力于科学数据的可视化和分析,是跨平台应用开发的最佳选择。
早在1982年NASA的火星飞越航空器的开发就使用IDL软件,到现在IDL已经被列为国外许多大学的标准课程,IDL使科研人员无须编写传统程序就可直接研究数据。


一、IDL语言是什么?
简单的说,IDL是VC、VB、JAVA、FORTRAN、MATLAB、OPENGL等语言的集成。
1、IDL =VC
从菜单的定制、消息的传递、类的定义与继承等方面来说,IDL如同VC一样具备了强大
的功能。
2、IDL=VB
从可视化界面的设计、语言的通俗易懂、编程的入门等方面来说,IDL如同VB一样,让
初学者心旷神怡。
3、IDL=JAVA
从跨平台的移植来说,IDL的功能与JAVA一样强大。应用IDL开发的产品,只要微不足
道的工作就可以在各平台之间任逍遥。
4、IDL=FORTRAN
FORTRAN语言是科学计算领域一门最普遍的语言,是科学家最为广泛应用的语言。从函
数、子程序的调用、数据传递、语言风格、语言组织等来说,IDL语言与FORTRAN则是如此
的相像,见到了IDL,你就会想起FORTRAN语言。
5、IDL=MATLAB
IDL语言象MATLAB一样,提供了大量封装和参数化了的数学函数,为科学计算插上了强
大的翅膀。
6、IDL=OPENGL
IDL的提供了丰富的二维、三维图形图像类,其功能可与OPENGL媲美,而且其封装好的
图形函数类的编程功能远超过OPENGL函数库。
同时IDL又是如此完美的ActiveX控件,在VB、VC中通过ActiveX控件技术能完整的再现IDL的丰富而又巨大的功能。此外,从另一种意义上说,IDL语言与大型图形和GIS应用软件相距又是如此之近。应用IDL可以快速的开发出功能强大的三维图形图像处理软件和三维GIS应用系统。
二、IDL语言能干什么?
由于其强大的功能和独特的特点,IDL语言可以应用于任何领域的三维数据可视化、数
值计算、三维图形建模、科学数据读取等功能中。概括说来,在地球科学(包括气象、水文、海洋、土壤、地质、地下水等)、医学影像、图像处理、GIS系统、软件开发,大学教学,实验室,测试技术,天文,航空航天、信号处理,防御工程,数学统计及分析,环境工程等很多领域,IDL语言都可以得到广泛而又深远的应用。
三、IDL已干出了什么?
目前应用IDL语言,已经开发出了ENVI、IMAGIS、RiverTools、医学等成熟产品。具体
的应用实例也非常多,如在2000年澳大利亚悉尼奥运会综合预报系统、美国国家环境卫星
数据和信息服务中心的厄尔尼诺现象分析等工作中得到了成功的应用。
作为面向矩阵、语法简单的第四代可视化语言,IDL致力于科学数据的可视化和分析,是跨
平台应用开发的最佳选择。它集可视化、交互分析、大型商业开发为一体,为用户提供完
善、灵活、有效地开发环境。
IDL在数字信号与图像处理的优势:
1.高级的智能工具箱
iTools(intelligent tools)的出现是IDL6.0向易用性和易扩展性迈出的重要一步。我们可以引用Mohsen Farid 博士的一句话给予iTools精确的描述:“iTools are excellent in
teractive visualization tools that allow complete interactivity and control ov
er datasets. iTools are well suited for exploratory type work。”

以往版本的IDL对于数据的可视化工作对采用直接图形法和命令行的方式,虽然简单快捷并且得到了一批用户的认可,但是面对计算机应用水平的不断提高,更多的用户选择基于鼠标即可完成的简单操作,而不是需要键入指令,iTools则应运而生。iTools是由一批工具箱组成,其中包括iPlot、iSurface、iContour、iImage、iVolume等等。IDL使用者可以通过鼠标进行拖放即可完成数据的可视化以及分析工作。
2.极高的运算效率
IDL采用面向矩阵的技术,具有高效编程特点的同时,自动支持多CPUs机制,可以大大提高计算速度。另外,由于IDL对于数据类型的要求比较灵活,可以避免Matlab中强制64Bit参与计算的瓶颈,使得IDL更加适用于工程计算和相关软件的开发。
3.支持海量数据
随着计算机应用水品的不断提高,人们数据量的要求也在不断提高。一些朋友反映说好像
IDL对于开辟矩阵的大小有些置疑,这里我需要补充一下。大部分朋友是受了硬件厂商的错
觉,硬件厂商宣称自己的计算机能够有多大的内存,实际上是指内存的管理而不是说明能
够一次开辟这么大的矩阵。并且,还有一些操作系统方面的限制。举例说明,Windows系列
都是32位的操作系统,一次性最大开辟内存是2G,除了系统本身占用资源外,最多能够开
到1.2-1.5G就非常不错了,因此,由此看来,IDL在利用内存上还是不错的。如果在64位的操作系统上,问题就会得到缓解。有人曾经在Linux上测试,利用IDL开辟4G的矩阵没有问题。由此完全客服了数据量的瓶颈限制和分块读取的麻烦。
4.灵活的外部语言接口
做为高级的语言工具,IDL提供丰富而灵活的语言接口。可以与C、C++、Fortran、VB、
Java、VC等商业开发平台进行相互调用,尤其是IDL中Java Bridge技术,可以在IDL编程环境中直接创建和管理Jave的对象。与此同时,IDL还可以直接调用IMS以及Lapack等算法库,使得科学计算与分析更为方便快捷。与此同时,IDL还提供数据库的标准接口,可以对各种大型商业数据进行管理以及的高级应用开发。

aliu 发表于 2008-9-22 10:28

谢谢风花雪月,我正开始使用IDL,在这里又可以学习了····

风花雪月 发表于 2008-10-4 10:01

原帖由 aliu 于 2008-9-22 10:28 发表 http://www.chinavib.com/forum/images/common/back.gif
谢谢风花雪月,我正开始使用IDL,在这里又可以学习了····

可以谈谈你的学习体会

aliu 发表于 2009-1-4 20:30

aliu也刚刚学这个软件,也蛮喜欢的,就是还很手生,想问问【风花雪月】,除了那本教程,还没有什么资源可以下载到?比如程序集之类的??
有的话贴出来啊,一直都在用你贴在论坛里面的那些知识,呵呵(感觉我自己真贪,,,)

rocwoods 发表于 2011-7-29 09:15

本帖最后由 rocwoods 于 2011-7-29 09:16 编辑

比较具有严重的倾向性,严重误导初学者。这篇文章在互联网的很多地方都能看到,原作者想客观比较,其实一点不客观。应该说原作者根本不熟悉MATLAB。说的那些MATLAB针对IDL的弱势: 1. 强制性的双精度计算,有时使得Matlab在计算时内存的消耗达到实际数据精度的8倍,这就造成资源浪费的同时,束缚了处理数据量的能力。
2. 琳琅满目的工具箱成为Matlab在市场上的双刃剑。
3. Matlab在计算速度和内存的管理,仍然存在着一定的问题。
4. Matlab不支持多线程(CPU)的计算方式。
5. 当Matlab应用于实际工程的时候,困扰他的是数据量的问题,到目前为止,IDL在运行2G的雷达数据时没有问题。
6. 就图像处理而言,IDL仍然是优于Matlab的工具。
7. 对于外部语言的接口,IDL则有着更为广泛和方便的工具,无论是C、C++、Fortran或者ActiveX控件等等。没有一条成立!
居然还说:
一、IDL语言是什么?
简单的说,IDL是VC、VB、JAVA、FORTRAN、MATLAB、OPENGL等语言的集成。
1、IDL =VC
从菜单的定制、消息的传递、类的定义与继承等方面来说,IDL如同VC一样具备了强大
的功能。
2、IDL=VB
从可视化界面的设计、语言的通俗易懂、编程的入门等方面来说,IDL如同VB一样,让
初学者心旷神怡。
3、IDL=JAVA
从跨平台的移植来说,IDL的功能与JAVA一样强大。应用IDL开发的产品,只要微不足
道的工作就可以在各平台之间任逍遥。
4、IDL=FORTRAN
FORTRAN语言是科学计算领域一门最普遍的语言,是科学家最为广泛应用的语言。从函
数、子程序的调用、数据传递、语言风格、语言组织等来说,IDL语言与FORTRAN则是如此
的相像,见到了IDL,你就会想起FORTRAN语言。
5、IDL=MATLAB
IDL语言象MATLAB一样,提供了大量封装和参数化了的数学函数,为科学计算插上了强
大的翅膀。
6、IDL=OPENGLIDL和MATLAB一样是解释型语言,IDL上述能成立,MATLAB更能成立了。

qibbxxt 发表于 2011-7-29 09:29

我不了解IDL,但是我懂点Matlab,这个帖子的观点我不能苟同,原因ls已经说了
说是客观,真是搞笑
给我的感觉,就是一个广告贴
要提醒初学者,千万不要被误导!

feynmand 发表于 2011-7-29 09:40

琳琅满目的工具箱成为Matlab在市场上的双刃剑。

扯呢?什么叫做双刃剑,工具箱多了反而会不利于自己的市场开拓么?
可能某些matlab的工具箱还不够完美,但是他毕竟给用户提供了非常多的选择,节约了大量的开发时间,用户看到如此多的工具箱肯定是感到更方便了,只会提高对matlab的评价。
每个工具箱分别购买正好降低了用户购买matlab时所花的成本。

Rainyboy 发表于 2011-8-1 18:29

回复 7 # qibbxxt 的帖子

以我对风花雪月前辈的认识,应当不会是有意的广告贴。或许当时只是想转过来大家讨论讨论吧。

smtmobly 发表于 2011-8-10 17:19

说实在的,真的不清楚那个好或者那个坏,只有用了才知道,就像python的很多数值计算包应用也很多,但是适合一些人又不适合一些人,还是因人而异吧!
不过,我看到这个介绍我就想了解,感觉很好,不过现在正在haskell和分形里还没有出来呵呵

Rainyboy 发表于 2011-8-11 09:47

回复 10 # smtmobly 的帖子

嗨,好久不见,最近发现一个在Android系统上跑Python的东东,挺有意思的。
在我这个日志里记着链接,有兴趣可以搞一搞呗,呵呵。
http://forum.vibunion.com/home-space-uid-159019-do-blog-id-18622.html

smtmobly 发表于 2011-8-12 15:40

感觉追逐这些东西永远也跟不上,最近喜欢haskell,和fp的一些算法,怎么用fp求解pde。
计算机的软件层面的东西变化太快了,跟不上啊 !

smtmobly 发表于 2011-8-12 15:43

如果有什么用pygame做一些小游戏的想法,可以玩玩哈

Rainyboy 发表于 2011-8-12 17:05

smtmobly 发表于 2011-8-12 15:40 static/image/common/back.gif
感觉追逐这些东西永远也跟不上,最近喜欢haskell,和fp的一些算法,怎么用fp求解pde。
计算机的软件层面的 ...

是的,追上是不怎么可能了,权当玩玩呗。。。
页: [1]
查看完整版本: IDL与Matlab的比较