|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6& v1 h8 O$ L/ j, W L
。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。$ c+ P A4 P- O- Z2 y% w3 _
这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。" @* p% g! b9 S
& P9 v/ Z& h6 E5 ^# d# H6 V完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如8 l! j, X# W; ~% r0 k% b
果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri6 N; G) ^7 Q) j: U; \ n N B
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现8 V+ g; ?8 k, E/ x; y b
在写出来的类和在5 F/ `) W0 j% A. j% P( R- F6 h) G
python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#
, C+ ~$ H, Q w7 x8 |; K的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这8 Z7 K0 Q7 n2 A+ O; @) ]* n
些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态+ b0 d. l% _5 l
方法(static
) l" m: F' r/ M2 N( Bmethod)。- e1 D9 X9 c H2 \ l
支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只5 z( U+ | }6 K6 U4 i# Y) ]
有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,
% {" F7 y9 H7 W% @& C+ Y这7 d. ~7 Z; F) k- k2 p
个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困
$ l+ K5 t& Y* o难。比如一个列表
' y$ q$ e4 I0 x ^; }* g,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
) P0 C# b+ d( H2 {1 h擅+ J9 B. ] m, c7 ]7 [3 q# j% f
长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,# b/ m$ X# Y: T2 D( p7 s
哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT; e0 J# M7 g% C! y h0 m
LAB实现经典数据
# V+ ]( A+ @! }3 N! K2 v! K结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很6 \$ m8 I* S; G, U) `
多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。# z2 v) X |/ b" \3 Y
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两+ ]/ B' K( R1 ?
个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late2 ^; o- s8 y! Z2 ], ^. u# u# Z9 `
nt
& D4 ~) r3 u M& C/ U& M( {Dirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时
4 F) Q" ?# e/ U5 b$ j: g用到两个算法,
0 s1 o( [* N2 y: B+ Y" ~而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改
0 p* h; O$ s; J" ], w名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
( r: @+ v0 Z3 ^& M9 c, ?: K$ }级
' \% p) a p1 p* U+ m, O4 Z语言的经验,终于引入了namespace,给这个问题一个很好的解决。
+ V& Z1 w+ A4 i+ X8 ~从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一
7 W o6 H# \* g! h1 x/ b# p" ?! X2 }个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应( B P6 F( Z z" F5 ~
用的需要。, @8 x9 L6 \. O$ s- J( i
- t3 T1 F+ _2 |: b" X% h$ s) H# q一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞# Y, H2 o: \1 w+ ^3 y6 F
争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语
( O* v/ u6 t" A0 \/ D3 g8 C言
% f; ]9 O3 Q( m6 C$ f,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的
8 h$ p7 Z) G# u6 q9 D4 @挑战。2 ^9 Y, }8 S8 Z# o2 ~
; w6 _- G# E7 t3 Y
除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。% |- }. i: v3 @
, m4 D: \$ C. y3 b6 S
它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio
; z$ l' T& D6 h( zr point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB ! e3 z/ q$ R& \ S. J
optimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引
. |+ [) ~2 O: K, r; k7 u" t% I+ w* N入interior point,希# u9 Y5 _6 ?9 n' t5 n
望它的优化性能能得到显著改善。8 S; V& q' h' F/ c; j& {; {
重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac. Y7 W0 q$ l" b( C8 ^4 M
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速; F8 C% p- L% \
度. S5 v: p! N5 Y* l
。2 Y, a* I% a$ Y8 f
它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn' X2 M2 U4 O; ]: [" l! j x
egative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。, b0 R4 S4 d/ m8 @4 X* ?0 f
Windows 版本下载:
' `% x5 U" U; A" a/ i
. D1 _" e! q! wed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks
6 @9 S v! |5 i* {% b0 d" S6 M( l/ V.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN7 [* q6 G( j# @7 m% t# ?
BMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/
7 F7 c, T, L9 Y; A. U: X
3 x5 y; S+ E) |: U3 L0 W/ z, H" K* D7 k: P' v6 K
8 o7 L2 ^1 s. VUnix(Linux)版本下载:) j8 @# S: D# s9 {8 [3 y2 c
; v! T% O( I) q8 h# F6 X
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R4 K+ O- _" D u( v( r; k+ i% E
2+ O+ }" n- G7 M; J$ K) ?
008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
" S; S R; [6 ?& |0 X& g$ O3 {RWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|