|
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.60 C! P- G0 I5 k
。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。1 X: B+ i" V. J
这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。9 g: r$ G+ o2 l2 Q
( }/ ^- { J/ N. u) N$ I' L完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如
& S' x3 D. F; o p! ]5 t果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri/ L) x' m3 p, l% u1 p
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现
. o0 d$ U" H2 K% n) b在写出来的类和在$ ]8 _9 d" f* o9 l. N, a/ {" C
python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#
8 `* w" [$ |7 {7 ^的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这
2 f) b1 A( N- O' J7 }1 `些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态: j& W8 m9 M5 q& w. a( w, [
方法(static
) W/ [; h& K( R& Xmethod)。3 b6 j6 ] P, `
支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只
! X% k/ _' q+ d1 R+ d有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,( N$ l; g# w- H3 q# y* b
这
. d8 o8 R, O, D" t9 L6 u% |2 b+ a个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困8 A: X( ?" T# H% Z1 T4 b, n
难。比如一个列表2 t! [6 n& [# p3 e
,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
. a5 Y' \; ^. f. J9 b' j, t' X& I8 b擅
: m- b- W y* M/ ?: D: K$ N长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,3 }& |+ _1 q, @% D4 V" w+ {
哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT
* ]+ Y# s- a& j% w; ^- KLAB实现经典数据" u6 o6 n2 }4 W" a& K; X2 T& \
结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很, I" t6 j$ _( S7 P
多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。" {3 Y) ^* H+ Y+ g7 N4 B
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两" e" A$ U" k5 ~) H' k0 h7 U' L9 |
个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late
% T( ^: K* z/ [nt
9 ?- r' D% e; aDirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时+ A7 b1 V' N9 o4 u4 Y
用到两个算法,) ]; z9 ~, x. s% l) [
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改
! }- w# y$ `3 k4 U- w名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
" c- W( t# w/ [+ m# W8 I* _级
" f+ u) X- _+ b9 p+ H6 G( T语言的经验,终于引入了namespace,给这个问题一个很好的解决。
$ a3 H9 N* ?& r( y" z从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一" O) a$ @8 k* A7 t+ ^7 m; e6 p
个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应3 O$ ]& R6 l g/ z
用的需要。
! p% v& Z" p& e. A. C( b9 b
4 t2 U. g% B, \一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞3 l, A: R* \" \* z5 z2 ]
争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语
3 ~( ] h, a+ }/ I7 j言5 d3 y& g1 i% T. L6 L$ N; s) Z
,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的* J- H7 c3 W m, E8 a/ ^$ f, l; w
挑战。
M0 Y6 T+ b% y3 w
2 H2 L* ~, _( P& X4 w除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。; I- B' V2 C1 t
/ b' m* t0 s: {; f7 M4 L3 z
它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio0 q- Z9 D# X4 y2 V, [# d* f
r point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB
' f* [" k* J3 y- D) i# boptimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引/ Q! A& j @) \2 }
入interior point,希 o [7 z1 D* `. ~3 Y
望它的优化性能能得到显著改善。
0 W1 i% W( L, {( C" I3 S重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac A Q% f7 t) `# r# V# D' d
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速7 H! K7 H, _9 k0 V* x
度
3 k+ ^, A: d' s- w5 n9 n。& O4 V6 p* E" T: A
它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn
% p* y% k9 n3 ^2 W) Yegative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。# G) P2 W, S7 d9 I7 u! N, v
Windows 版本下载:
3 e. ?$ ]5 c5 ?7 _6 X6 P1 T9 v5 T. i; a2 {4 D' b/ l1 Q" V
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks
2 p9 C' M7 n( K/ c7 K3 A% O" Q.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN
! R( c2 G4 p0 NBMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/& c- n& S/ F8 Y' j8 N& z w8 U" C
6 C% S! t4 l3 S4 ?2 ^: F; E
/ I( n% j5 [9 }9 a; ~2 `& V/ o5 |
! \0 B, z* g y) e
Unix(Linux)版本下载:/ }5 Y$ e# i3 M5 o: }
. J7 u/ b$ T- p7 ^: Ded2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R
5 `+ y5 w; q/ L }, R5 F2/ ~% d, x( t3 n0 S% F, V
008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
! H) \; b+ p3 H l- a2 u/ KRWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|