|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6
- D+ s3 ?1 K7 l& }; l。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。
4 Z" Q. S* z" l这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。( e+ U6 u3 e& O) V$ C1 I
) v* e* ]. d z8 Y1 \完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如 N6 a9 P) ^6 \# `
果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri. g# v4 {3 J0 y* K T+ M- X+ J! u! g
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现1 s8 n! X, E( j3 N4 {& ?
在写出来的类和在
4 q) o' a4 K9 h6 |1 Spython里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#( ] s- W" k4 H% H, I$ P) `0 W
的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这
: D3 ^& v0 j0 `' h些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态
; Q9 H5 O9 ^+ F( g方法(static
% M3 o7 A! P7 C1 n3 _- wmethod)。
- r1 P0 i/ U8 D% I @6 T支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只
1 c2 M% R/ \9 i# H' m q- Z' M& p有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,
) m; Z! [6 N% J- N5 U. G+ H" \这5 S3 \* c0 _* r1 r2 {( A
个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困$ M1 i* B" M0 T N5 o1 P
难。比如一个列表
. S8 s5 }4 j; z+ ]; |# g,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
; ]' Y; y7 S, C% X! l" m擅7 f( o. Z5 r" P9 f
长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,
; W$ B: f" r( b$ V0 \3 Q哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT
5 }" {1 E3 ^. pLAB实现经典数据; h" T6 { t5 l/ j
结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很
% h! e6 R5 j: j7 Q- N: m& A' Z多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。# I* `- k1 A3 [7 k
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两
' x: b' G; R1 |$ q; |个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late
, _: W5 D. R5 Y: q4 G6 N6 mnt
1 q2 x2 N$ M0 M( ^8 V- v8 F# Y# FDirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时9 P( r+ U3 `# U4 u( K
用到两个算法,5 {( J3 f. X& x) l4 }0 P) E
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改
4 D6 Y' L' s5 x0 V i; A名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
7 G$ v7 I8 i( n3 x级; G; R3 T" \; J" Z6 X0 y5 \4 u
语言的经验,终于引入了namespace,给这个问题一个很好的解决。
% [* `, e# F$ w0 }0 u. m6 F从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一; z) @0 E( q+ Z# v1 b
个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应
* K! f/ o- L' W2 j用的需要。! X7 H7 p a/ k) e3 L8 b
5 A. a" Y: E# ]4 {8 I7 v
一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞
: K5 _4 {; i- Q7 \" `% S争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语
6 g! O+ b( L" C' `8 S言
1 t5 \# ]7 \! h' n: B" H- B,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的1 S! a4 Q X- q! S5 [ f
挑战。
# `. K' k8 v1 ^/ A s- d" k1 k0 L. O2 K: H& g/ [( |- I5 ~
除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。! h- _$ k& j: a" ^
) H" K; e2 F" a它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio
4 U& W8 b" ^4 l3 g* m- v+ qr point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB
& V0 W1 Q& N! O5 S& }optimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引
7 X; I6 [3 L/ R2 N' U$ f5 f! D; e入interior point,希& `% x! [& N; X5 q1 _! d' d. ~, y
望它的优化性能能得到显著改善。
1 }( z% Y+ H3 d0 F. O' E重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac3 W1 U2 V3 c; s5 U
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速" _6 M. `: {0 ~2 p9 e$ R
度% R5 J3 J2 ]5 k
。
% K' I. f0 K9 {' y它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn
8 p( l Y& ]$ Yegative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。+ Q M1 ^/ X2 ?$ W5 c
Windows 版本下载:
4 t0 q W- P- \" _% u+ N" `
$ f' R& H( Q$ i q) }' {ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks5 D2 W& \7 B+ g) ]( Z
.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN
( L! V- f% D; i9 s+ FBMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/
: b0 A! A8 [0 w( l T- ^6 W8 n, y+ }9 b1 H$ n; n
; X, I# Y: x/ ^4 u' J
- t. Z" M* Q' J3 ?1 B
Unix(Linux)版本下载:/ ^& i) N$ H, D. a ]! ^; h! X
: \; A: U" }: }8 m4 _
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R. I6 {, L7 a* |( T* B5 v- _
2
. L0 O/ F; R/ K008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
3 G: T/ O% O) m# i0 o, RRWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|