|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.6
k( l0 y9 l6 @3 }3 @+ O; |。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。3 Q) J8 P4 A* n( ^1 s
这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。: o! {" d! d0 z$ C) |) A2 b' Q
* G& O& s" q* @7 b( ~! f0 }- L/ J完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如% c& f" z3 N4 N8 Y1 u+ q" U* }
果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri& ?8 } p+ P* F
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现8 l3 R2 Q; s9 O+ F2 c
在写出来的类和在
& K* r* o; l: I {python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#
! {5 q- a2 M) [& |/ G的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这
4 b" R- Z! m# n1 Z些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态) m3 i; E" }2 C8 _5 r
方法(static
# f3 R; P& r: p5 m# amethod)。5 o+ {( V3 I ]
支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只& P# r9 t$ D0 K, y0 C7 `
有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,, d4 e8 T7 u, ~3 e$ v
这
/ U2 D2 f8 V& q" [; F: n Z0 D% d个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困
' }5 Q. g% n3 j3 C难。比如一个列表
/ _% x* U C8 {& b8 c( W,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab' X' ^' W9 [9 l1 k, o
擅* O& D- k% N) F( f' C
长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,
! `2 Y& C2 \! G# O哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT
8 D* k' S! N5 `. G/ wLAB实现经典数据
M9 ?& e9 }& y) R结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很
# C( J) f6 e3 }: f3 A- G多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。: H* ?- b5 [% Z7 j* _
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两
$ y7 ]1 S R3 ?7 c3 J/ |个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late u( A L$ T7 ~/ M% t6 D: ~
nt' Y5 |2 X' h# n0 Z6 d& A7 v
Dirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时
8 d. O6 v! H( V/ N& E C2 t' T用到两个算法,/ \ I+ q% Y; e
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改
3 f8 {5 G! m) C名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高7 H. e* _. \- b
级
8 v, C# O r! g+ [5 P语言的经验,终于引入了namespace,给这个问题一个很好的解决。7 v1 R+ K0 _1 `
从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一
5 D, ^7 V* ]0 @" E1 L. o" A! q个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应! u" i2 O3 R4 Z+ Z, L
用的需要。
. B. V0 C. }: |
3 ?( Y( r, W7 o一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞
/ N1 p, M+ V/ a; p争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语& o. Z- [) \) @" t" z; |
言$ C1 q. X8 P' g1 A; v% L2 [' H) {
,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的# N7 a4 H0 I1 }% D
挑战。0 I- A! c* N1 l9 ?5 ]3 c+ e. I
; R6 ^4 ~! r/ T2 p6 P0 q除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。 {+ w, E3 n9 |0 M. d- s
) j; J% d# v& N+ c/ g1 |, @8 ]) p# G它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio
3 [# n3 S0 e! v" p, E0 Xr point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB
) M. P7 v9 p) Noptimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引/ Z- s+ h! |: s
入interior point,希3 x' Z5 l% g+ e; @
望它的优化性能能得到显著改善。( C9 r$ {. ~- f: T- V, i
重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac
+ W; W& ^+ e" q: v7 bk核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速
6 r4 e/ _' L/ h# S度/ A. {( ]3 e" ~, C5 W ^
。5 z/ E6 |- f; u3 Z6 j
它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn
( ^9 ^! x; q0 {: M1 }& ^ hegative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。: T/ t- X/ s* \2 T Q- d
Windows 版本下载:
7 r4 Y+ n4 b/ Q& ]4 B) t$ {0 @9 L e0 D+ \
ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks; ]+ [5 f0 \6 [& p- v( n6 A' p0 N
.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN* ?5 v$ r; F( O
BMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/
8 {& Z) T7 E* f
) k: b$ _. q& d1 G& ?- }6 l5 j; R7 \. s. E
A" t0 ^1 @- f% s, u6 X
Unix(Linux)版本下载:
( Q5 ~% g2 \3 L: W- H9 J' V
$ S0 e- N' H8 p! wed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R
9 R4 Z* }, ~# I! L H3 n0 ^. ^' R2 o2
" |+ n3 G$ g7 g; s+ v/ T008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT
% g3 }2 ?6 @5 g$ c1 W% p, ERWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|