|
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6
% L/ ~6 n8 m& ?4 R w) h" [' |。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。
, f( e n, i2 W5 ]) U这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。8 E* U4 V" Z" x7 c4 e% y) Z( t
' |: i, t0 a: f6 O& v' o
完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如
3 |3 I! R# ~- }7 P, }# f果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri' w4 `# h+ x/ I0 ^9 W& ~
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现- o5 U. B! E& b" t9 L! I" C
在写出来的类和在/ V3 m) C# i6 H, v2 U
python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#% @7 F) f: S6 q/ U
的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这
5 n0 n; s0 m$ @些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态5 U. f. R' S7 M" u) }
方法(static) p- L8 v1 s5 j# \8 P+ L8 j
method)。
6 o: l# g6 u, O2 g支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只
, Z' ^$ Q4 r/ y有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,
4 r6 T! W. a% E# n8 F$ e6 q4 n这* P, y* `$ b2 h2 C, L# a
个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困
: ]; M6 D, M( D难。比如一个列表
- C9 @% q4 o- r4 T- P3 g% M0 r,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
2 V9 }( X' y, a/ H/ C; x* S擅8 _& u4 G( ^% c' W" Q
长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,3 u# I( z" W }3 ]' t" o
哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT
, }7 Q$ @ }* d! A! T9 CLAB实现经典数据
; Q* N' a8 c- e2 U, ?0 |- X. [ b. {结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很) U2 U% g' H; t
多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。& x" d1 `& I8 [( S3 W
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两/ U; D K" f$ j8 e* Y+ s- F
个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late- L/ |# B# R% H, S( h
nt
9 ~3 P' W: ]' W0 i7 ?- G, B- JDirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时4 f9 m- `/ i- B; C3 \3 ?6 q1 l: V2 \
用到两个算法,
7 n* N+ I2 q$ |3 |而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改% c4 f! F7 s/ n. H! f5 \
名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
- U5 Q% C J8 F- P5 i) [# F9 S7 ^& F级
4 I/ Y2 l* ^( j0 ~! E( X/ f语言的经验,终于引入了namespace,给这个问题一个很好的解决。
6 I/ G6 j1 y* R3 C4 s2 I M从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一
* u5 M- |: o8 O个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应
6 |4 u# c( T: M1 p: B- X用的需要。
) T, Y: r9 N, C- a' b- C0 W$ f
! X+ [9 Y. h8 N一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞$ X' _. L6 O2 H1 s) s# n: O7 S
争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语
. ^& {1 f$ y0 i+ r% ~言
4 I# d: n. g7 z% Z,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的2 y& n, j- ^ ?& O
挑战。
, @6 a7 Z0 |" N# l- u
* a1 o5 N4 p1 J- ]) i除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。
/ `3 }& g% V D' Y* t
' v9 t) E8 Y% V* G }' {它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio
2 B" W6 B% i) } C0 }% mr point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB
& h; ?2 r! N: \5 o xoptimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引" w( G Z5 U% X; N
入interior point,希8 v. ?4 \3 |% }' S' M5 ~- W
望它的优化性能能得到显著改善。- m: O, v& s J; X
重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac" X }+ f- P2 ~0 `
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速
0 c9 o4 ^9 I+ B7 T度
0 I4 P% Q2 n) a' u。
/ ^$ D$ a6 v: G( f; r它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn
/ r8 Y5 h' Q, g( \1 W, D; Negative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。1 }" v4 w3 A& V/ O
Windows 版本下载:1 ]* g1 S/ J, j3 K$ d7 w
: j, [4 \5 k8 j6 [8 {1 |" Eed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks4 s5 }3 [9 X! Y
.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN
" ? P' u/ Z5 {3 N; G$ Z8 dBMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/
4 R: B) U5 N; H6 A5 o, l2 M o4 i! l8 q5 X' Y9 V
% @7 p" L# I# V
1 [! D5 `0 B; UUnix(Linux)版本下载:( g# K! Q& d' W/ C0 F
: N! I( ~3 ]4 E1 i" X$ {ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R
& z' k" Z! x* P8 U2! e' F9 L$ a2 {$ }- i* E% @- o
008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT8 B7 D- @8 d4 h6 k( D* o: {. F
RWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|