原创 IDL与Matlab的比较

2009-2-28 04:29 5243 10 11 分类: MCU/ 嵌入式
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控件等等。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

zhangshaobing517_935512703 2009-1-19 14:41

看此文章,貌似IDL胜出matlab很多。
相关推荐阅读
zhangshaobing517_935512703 2011-03-21 01:28
KC24RT-300调试笔记
项目中需要使用LED驱动器,主要是为了让一串LED发出的光照一致,所以在试验中采用LED串联的方式比较好点,LED并联容易导致LED发光的 不均匀以及寿命减少。我在项目中采用金升阳公司的KC24RT-...
zhangshaobing517_935512703 2010-11-19 14:53
线程中CreateEvent和SetEvent及WaitForSingleObj
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面.CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信...
zhangshaobing517_935512703 2010-11-15 13:29
VS2008 BEGIN
Visual Studio 2008环境与VC6.0的环境存在着比较大的区别,下面就一些小小的区别在这里做一些探讨,欢迎指教!1、如果是调试控制台程序,很多时候点击“启动调试”后是一闪而过,此时可有两...
zhangshaobing517_935512703 2010-11-01 20:38
使用MFC的数组类
 MFC的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型。C++的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的...
zhangshaobing517_935512703 2010-09-07 13:14
循环
 循环设计的注意的事情:(1)双重循环的跳出问题,break只挑出所在的循环,如果使用双层FOR循环,单个BREAK就不可能跳出所有的双层(2)在迭代的时候,注意起始和终止的条件,尤其是终止问题(3)...
zhangshaobing517_935512703 2010-09-02 01:09
图像处理改进
1.特征点提取的算法  标志点的提取算法对结果的影响虽然没有经过试验或者计算的推算,每1个pix的偏差对结果的影响有多大,但是不可避免的,要想获得高精度的  测量结果,高精度的提取对结果的影响还是很大...
EE直播间
更多
我要评论
1
10
关闭 站长推荐上一条 /1 下一条