IDL与Matlab的比较

news/2024/7/8 5:04:19 标签: matlab, 图像处理, 工具, 图形, 产品, fortran

转自 http://www.gissky.cn/blog-107.html

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控件等等。


http://www.niftyadmin.cn/n/1535979.html

相关文章

java zip malformed_Java操作Zip压缩文件遇到的编码问题

1、遇到的问题:在for循环操作zip文件(文件名包含中文)的过程中,报错如下:Exception in thread "main" java.lang.IllegalArgumentException: MALFORMEDat java.util.zip.ZipCoder.toString(ZipCoder.java:58)at java.util.zip.ZipI…

IDL程序发布方法总结

一、7.0之前IDL版本的程序发布1.Windows下根据主程序名建立project,使用Export按钮发布;发布后的程序若需要简化文件夹的体积,只需bin.x86下包括freetype2_1_3.dll、idl.dll、idl.pref、MesaGL6_2.dll、MesaGLU6_2.dll、osmesa6_2.dll、ug322…

hibernate 延迟加载和抓取策略

一、延迟加载 1.简单查询get,load 针对对象本身延迟或即时 当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句&#xff…

QT中调用外部程序的方法 QProcess类

QT4对于界面编程无疑是一个很方便的工具。但是由于它界面开发专项特性,可能导致了某些方面的不足(到目前为止暂时没有使用到这类复杂功能,所以只能是推测)。这样当整个程序需要某些功能时,就需要外部模块的支持。为了能…

洛谷 P1548 棋盘问题

题目描述 设有一个N*M方格的棋盘&#xff08;l<N<100,1<M<100&#xff09;(30&#xff05;) 求出该棋盘中包含有多少个正方形、多少个长方形&#xff08;不包括正方形&#xff09;。 例如&#xff1a;当 N2, M3时&#xff1a; 正方形的个数有8个&#xff1a;即边长…

【转帖】常见的几个Qt编程问题的处理

&#xff11;、如果在窗体关闭前自行判断是否可关闭答&#xff1a;重新实现这个窗体的closeEvent()函数&#xff0c;加入判断操作 Quote: void MainWindow::closeEvent(QCloseEvent *event){if (maybeSave()){writeSettings();event->accept();}else{event->ignore();}}…

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123...

题目描述给出一个不多于5位的整数&#xff0c;要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字&#xff0c;例如原数为321,应输出123输入一个不大于5位的数字输出三行 第一行 位数 第二行 用空格分开的每个数字&#xff0c;注意最后一个数字后没有空格 第…

aes文件传输java_Java AES加密解密工具 -- GUI 、在线传输文件

原理对于任意长度的明文&#xff0c;AES首先对其进行分组&#xff0c;每组的长度为128位。分组之后将分别对每个128位的明文分组进行加密。对于每个128位长度的明文分组的加密过程如下&#xff1a;(1)将128位AES明文分组放入状态矩阵中。(2)AddRoundKey变换&#xff1a;对状态矩…