|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6' W- O% [1 D$ e7 O9 m
。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。
& ]7 k* @+ W$ o+ ]& y这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。 |- M8 a' r$ b" I/ c$ v* t
3 s3 @, w* s& }+ A
完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如3 @2 E0 P8 F$ o
果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri
4 ?1 \6 g' |% i& u: T% l4 fcky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现9 u* d8 }" S0 X) U: X4 _" [
在写出来的类和在
/ |6 M0 p4 w- T% gpython里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#% }$ \( b5 {* b7 ^8 Y
的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这1 r B8 J& F/ W! l8 q+ j U
些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态
" R6 @% N; ], Y4 D方法(static W/ [1 L0 w' U5 N: ^
method)。
# G+ g% D4 L5 }: J e* L6 @& A% C支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只
- m( u6 D% ?4 I. n* X ]0 `有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,& L# `3 a) ~' B& _
这
6 V0 p# g; ]5 e/ q. l. c个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困' y: A9 d8 U; g! h
难。比如一个列表
) S; ^ Y) g/ V,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
+ ~. H" Q& p4 K6 }6 {4 `擅. r3 D( j3 I6 z
长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,
( A- w& L, ~* X S( U' ^哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT+ m" [9 ^$ D, o: S- O3 v- z
LAB实现经典数据) a9 _7 H6 F9 k! H" X1 _
结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很' S$ N6 u- @9 m, N" _% v
多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。% K7 J# Y8 {7 P" ]
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两
6 M/ l3 B9 }. o+ |个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late
; m" Q( v% d2 T. x0 Z* W' g7 hnt- q) C9 h# G! H( X
Dirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时7 |1 G9 {* [$ X* d* u6 _$ P: |
用到两个算法,5 m3 ]8 I- O8 u' k, d* y
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改
5 B; `7 d8 t( }! i. }, h$ C) G; W名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
Y c4 ~( I; F级
$ g$ ?( r n* e2 N6 T7 g& v+ m语言的经验,终于引入了namespace,给这个问题一个很好的解决。
" Q$ ^- l0 L" V2 p7 s& m从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一* E# I2 `. @" g# w
个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应! c7 L" j6 \& i9 G4 X# I; o! o
用的需要。) Y& v' R# o$ k* [/ k/ Z0 g
0 }7 q2 W/ {* v2 e
一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞
; m4 U T8 s& m# C! a9 s, a争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语" k5 c9 ~# M) v/ L. d. }
言! t$ A: _# t! ]8 c) h% e+ u. |
,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的
+ I0 G% b2 J ]6 f. a3 T# {& ~挑战。: x& y' t+ a- {" E6 N; O# j5 a$ j
: H; g4 i! F1 f
除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。5 _& e0 R* k- z |* k
7 g/ ~' G& m) \/ J它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio( H' v) }% N% \$ a2 `- b! r0 U
r point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB
2 B4 @8 d* N' A* ioptimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引
, `4 J! s! q" i' Q+ y入interior point,希
/ F7 Y9 ?2 g6 U望它的优化性能能得到显著改善。$ T: s6 V4 K/ h3 l# R9 g
重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac# ]9 [5 h7 N& ~3 `; j% ~* x* R
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速
1 ^1 q Z- {( ^3 J度: ~( S$ n) p4 e' ^3 S) E
。3 a/ ]; f# @* l" q2 i( O2 e& y
它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn$ b1 P R* d3 |, I1 Z0 M5 q
egative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。- o. _, ]8 A1 Q, v% j4 _$ t) H
Windows 版本下载:! D. a6 |; R9 Z
$ `, g: i ?% k
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks
R! ?9 d6 J/ l.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN7 F& Z3 [, R- R% M) @- x7 G
BMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/
1 _! T' i/ F9 D/ @7 m1 z+ P2 k6 C% ?$ \
X: y2 E& H+ X: `
: }' S9 s2 `! @3 ?$ S7 L: m8 D1 q
Unix(Linux)版本下载:
- B, C3 @( [9 T9 Z& r3 g" J7 E: T, p, Z, M k
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R" C7 \+ t" z! Z i8 }& @
2
1 h9 Y- D0 g; x0 ]008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
+ v0 s# U c' @( U6 \7 b6 S5 k4 URWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|