|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6
) v U( ~1 ?& M+ _9 W; f+ N, M。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。
7 L) w8 ^; d4 X5 `" W; k3 v+ z这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。
9 [3 Z V, N& l1 B
4 i2 H. V$ D- C完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如
2 l% Y. g1 ^7 b- E4 }5 V/ J7 i果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri
7 {. [+ z/ U9 y( ~" i% F( P5 gcky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现8 d7 m, i6 t0 l( b; N. h
在写出来的类和在; u8 ~# O+ a+ y
python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#
3 u8 s7 C6 k. u1 d. E的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这
( Z1 W2 p1 z1 s( `0 o些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态' r9 I' Y3 |" [) u, t+ N5 b6 f. i
方法(static5 C5 }6 k2 P; y$ P: k
method)。6 P3 u( B9 E& G z3 F) ^0 X
支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只
* a+ t* T4 M" K. f* M" a有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,! K& X. S: k7 h0 W/ I: q
这* G/ m( {! v3 g; r+ B& Q
个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困
) F( M4 k7 b. a3 ?$ }难。比如一个列表& e% T. v* c9 |3 o9 w
,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
% T3 r7 z/ r4 C+ K0 N3 {擅/ \5 S3 Z7 `# M% z9 S, k; }' `5 H
长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,
! |* P( X) u" Y, q# U5 K哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT0 J4 C) a! y3 L1 O# p# X
LAB实现经典数据# W; s4 A% X( s3 A) t+ o/ q
结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很- Q$ ]" }. S/ N3 Y( O1 I, F
多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。2 d: Q9 p$ u5 h! k* f0 z4 I$ C
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两' x/ u7 n' Z! D! v
个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late4 s5 i; D* E6 l# M1 \1 {
nt
; N8 e% a$ S% q+ wDirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时
+ N- S4 d' s; Q8 g6 C用到两个算法,5 V- m k; g1 B; Y# p4 K# G' Y
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改; b2 B: O v1 |
名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高& o0 h; ~# \5 u* x
级3 M7 Z6 q9 H: b, F4 r
语言的经验,终于引入了namespace,给这个问题一个很好的解决。 i; ^; a# L+ p5 X2 |$ W$ K8 |
从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一
/ G9 n& H( u: u; o! P7 }个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应3 Q& v: M4 n+ G
用的需要。1 ]- s. q* R: C6 G+ V
! m3 e0 M* p1 i9 C# i
一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞& [" c2 z4 D, q
争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语
* _# f8 W! z/ U言
3 P9 Q( h6 | i$ k,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的# E4 N6 {3 l |. u0 @
挑战。
1 @& K$ I, R, k6 _: w+ g# P, n5 d5 Z- A, ^+ v6 ]+ E$ A" j
除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。+ p% d9 O( |7 U: X% S: Q/ n
- E/ @) N* I3 ^9 ~& w- }" a) e8 v它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio- [/ X8 P1 A/ {& J" Q. V
r point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB
3 ?: x- R* Z' q$ o- ooptimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引
9 q& g6 V- v, d6 U% X7 H入interior point,希
9 a" ? M7 x- b望它的优化性能能得到显著改善。
& N) W+ ]( h# ]" ?& N2 r, C重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac$ @* h; h& I% Z
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速: T1 _ d( U# `1 H- P# f/ f
度* g# F# v$ s$ ?, ?
。9 I$ W" b6 y# u' g' P0 y1 ?: ~
它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn
! v9 \+ k( t: P! \/ M2 zegative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。
: ?7 E- s- r! t8 V! KWindows 版本下载:5 G6 `, ~' o" O2 X6 r% O2 v
, |& }4 [3 {' i4 |: s4 d
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks( ^/ p5 V% Z& Z
.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN4 h' s- E% |" C2 M* A L- v/ u1 S- t
BMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/$ x: R5 h' `5 T0 n8 f6 U. b/ _
1 g- B) i! L+ t& t+ f/ V& J
5 a* F' y$ f- v
7 \+ y9 @& \9 y) y. f
Unix(Linux)版本下载:
# m/ e/ V* C* |
% t, H* o3 F7 B8 ?/ J {& Q* f, i2 yed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R7 D& z! h% s6 I: d
2) o* c; E5 x9 x, h$ ?2 y+ h6 o
008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
: ?4 V# v+ b$ d' yRWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|