|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6" h8 s% p" D+ g$ Y( o/ G# t
。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。/ X. M8 S. [, Q, p; }3 M- E
这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。
& g( @' z3 u2 o" f$ Z3 l" w, T. m
5 o3 S7 o7 r8 q) r- z完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如
" ?0 o: }& U# G+ x果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri& ^( e" N7 U6 h' @) l$ [' q! g8 c( p
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现
+ c! x4 M6 g" M6 X8 j& O在写出来的类和在* B$ F; B' c3 T& D2 ~ u
python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#' f2 k/ o- a7 S" c/ L
的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这) H; `/ ^+ |( O) @( j& L4 o2 |
些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态
8 f$ r+ X: E& O9 P; n5 [方法(static
: i5 s r0 e6 W! I/ ]method)。
: b! @0 b9 ?- H( x支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只; J G" R0 k# X% K
有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,
: u# k0 C9 e B- }% {% t: u. s这- b. a9 X& _2 N" F2 b* n0 p
个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困
# t! ]4 D0 l2 d3 B. R- j% J难。比如一个列表' k0 O) Y: v( H; a9 T5 H0 N( t
,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
( J) ?7 A( F. m/ W" d8 {2 F0 d- z# i擅
. L0 |5 Y! x% G1 S长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,* x" Z5 G- q$ m6 R- T2 {
哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT
2 j3 l; _3 q( P0 V7 d2 T4 kLAB实现经典数据5 ^5 }4 w: g( H* N ^/ k) [, T, z
结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很
: F& Y' Q+ e7 I9 a6 i多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。& r9 g9 k& {" f+ ?
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两( m g- C: O: S }' j# m
个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late" l( P+ q+ ^6 J- t: }, N6 D
nt" A0 N( P% B& o8 B% X" l" ^8 Z4 _2 a
Dirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时
* v [7 d; S0 A- ~. R用到两个算法,0 @# f9 _2 f; r( r, p+ t
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改
/ b5 s% W+ k3 ?9 v) @ n! J名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
G1 z* j7 Y; `$ Z. g' ^& B m1 J. j级( r- t4 N8 h& ^ }) i
语言的经验,终于引入了namespace,给这个问题一个很好的解决。 I( _: C7 X. k
从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一# T5 L2 Z0 j% L2 G @
个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应
8 H3 H! m. }. j用的需要。2 m1 Y- ~' Z. H3 p6 Y5 ~
7 ]6 M' S: v ~: p; y8 J T
一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞8 b4 b. B+ d# n. v8 p
争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语( K+ z9 R3 i- A0 H6 `
言
& s1 L9 o. G% l( c# f,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的
3 D, o, H h {2 g挑战。& l/ o$ B& F- P8 g! [ R6 }
! ^* c: E0 `1 ~2 ?- ]7 X7 a5 n, @% z除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。
, a/ G5 z' f$ {! A. H; t, X; ^8 }* S/ u5 M& L7 v. c
它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio" N/ V7 W+ W- i) i% K$ {
r point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB 9 T" c% u6 X1 p2 p' x3 u
optimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引
& [7 ?# r0 P7 v, ~; R2 i7 Y* \入interior point,希
+ D: W0 r$ T/ E2 l0 m4 O望它的优化性能能得到显著改善。
* e3 r: C, y# n5 Y- [+ W重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac9 Q" r2 t/ j9 y
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速- ?3 {8 i& I L9 V1 ~* q$ w L
度
0 J7 Z. X* J# W, Z" N# ]( `! y。
/ {% L7 g. W! L它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn8 H9 O& h( k4 }3 _2 ~
egative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。
% }4 Y% j9 r* T2 X5 ~4 mWindows 版本下载:
M- W, g [# |5 x! U4 }+ l& b8 \: t* u7 i- n7 j
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks# U1 {$ n% h, }: h8 b7 U }3 r
.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN
4 S7 G* f1 }0 z( ?' O. b# |9 RBMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/
1 n) ^$ ^; x' T* J, r! c2 {) S8 ]! P. H8 ^( t
* u0 Z3 S; D7 x. |+ w5 W) ]7 t% y2 C6 ~' Q
Unix(Linux)版本下载:
2 P1 ]% s i' @" G
0 h- l% o! b* y/ u* G4 _: Ted2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R, R( j5 n/ [3 w. H- y. F- N
2
3 w# r# y- X! j1 g) g008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
/ h k& G& ^$ Z/ \/ dRWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|