|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
今年3月,Mathworks推出了MATLAB一个重要的新版本,MATLAB 2008a,也叫做MATLAB 7.60 G! k; i8 D, V# ]3 Y- }, m
。在这个版本里,MATLAB解决了几个长期以来固有的弊端,而且加入了一些重要的能力。
% b2 q- S& r: ]2 ~( f这次的更新是非常aggressive的,可能代表了MATLAB的一种历史性的转型。
) h% H' n$ N: v9 J* E1 W
# c; C! S- T3 S完全实现面向对象编程。其实,在MATLAB的早期版本里面,也有class的概念,不过大家如
0 M1 a" A* z. u& h" G果使用过的话,可能知道那是一种不太好的设计。功能不强,过程繁琐,而且,很多很tri, r; f4 u3 Y) ]2 ^9 }
cky的地方,尤其是重载numel, subsref这类函数的时候。而新的设计抛开了历史包袱,现
" X& o# t* e- {4 C0 H在写出来的类和在9 y) }3 d- Q# E
python里面写的长得差不多,舒服多了。这套设计,吸取(或者“抄袭”)了Python和C#
7 W" u- w: a9 p, l( F; i0 E的优点,除了支持封装(encapsulation),继承(inheritance),和多态(polymorphism)这+ V2 [) `! d; L1 d
些基本特性以外,还支持了一些新兴的特性,包括属性(property),事件(event),和静态1 K# f( `$ F( H" _& [8 f( Q
方法(static
! U; J6 h- k9 m+ b2 A! g9 T! E$ rmethod)。
7 b% N/ n) g* P支持Handle类型——用另外一种说法,就是支持函数调用传引用。以前matlab传递参数只
, z9 x% v" a' D5 r. Y7 F有一种方法,copy on write。就是说,当你传一个东西进去,如果它要发生改变,那么,5 Q8 u) N# X. P6 w
这
; W+ i% d; A4 w$ ^7 H5 M$ A个东西会整个copy一份,然后修改会在副本上生效。这使得实现动态数据结构变得非常困
% `. C$ x' `4 u% O4 y: m难。比如一个列表& Y5 d$ Q6 P# s. v8 j# U
,如果每添加一个元素,都要拷贝整个列表一次,将是什么效果呢?因此,传统上matlab
% c* ]: s; s! m& t# g擅
! N1 E7 ], y$ s# a长于以矩阵为基础的算法,但是对于以经典动态数据结构为基础的算法,比如动态列表,1 D( {3 y/ b6 I4 I. T: M' ^
哈希表,搜索树,图等,就力不从心了。这个新版本终于引入了对引用的支持,这将使MAT
# t' r* U U1 v7 L1 [( k9 ^8 aLAB实现经典数据
3 h% V ^2 }0 q2 q7 ?" P9 c" z结构和算法变得前所未有的轻松。现在,数值和统计算法与经典算法越来越多地合流,很
L* j! i1 |# I; a7 ?0 Y多应用都需要同时使用两方面的算法,MATLAB的这个变化正好适应了这种需求。/ k k8 M. S7 Z# e& F& H/ n3 _
引入了名空间的管理。以前,MATLAB所有的函数都在同一个global的名空间下面。比如两4 k# V$ H- t R* ^) D2 R( }, f5 _
个工具包里面出现了同名函数,解决起来很麻烦。比如现在有两个算法叫LDA,一个是Late/ O# T. u4 a# Y. S: j" |
nt
! o: G5 k0 N& e% W; d# N$ e# fDirichlet Allocation,一个是Linear Discriminant Analysis,在一个应用中需要同时: o* e* X8 t+ F( ?" U7 p! ^
用到两个算法,& K: r/ Z4 G: k" J$ _# i( `9 Q
而写这两个算法的人各自把它们命名为lda.m,那么问题就出来了。一种naive的方法是改, m v1 y, D d/ S
名字,不过会直接破坏掉那些toolbox里面对那个函数的依赖。而这个版本,它借鉴其它高
" `/ i/ I1 O1 F级# v8 E( c' K4 ]+ [' H% j$ }
语言的经验,终于引入了namespace,给这个问题一个很好的解决。+ J9 p0 }* C+ ?8 E- |
从这些特点看来,MATLAB这个版本的重要改变,就是全面吸收其它高级语言的特性,从一8 e- G8 q C) E* Q* D
个数值运算语言开始迈向一个以数值计算为强项的通用语言,以应对复杂或者更大规模应
( V/ P, `2 Y* V' }7 O用的需要。& G. N5 V( P5 s& v
9 b- B. Y" b' J4 k一直以来,由于matlab缺乏处理高级数据结构和建立复杂应用的能力,它有一个有力的竞
! s# p4 W3 e/ o$ c ~0 U! Y争者numpy,这是python里面进行矩阵和数值运算的包,它建基于python这种著名的通用语
9 q# D, F* J; \言. K# r( _ K1 @- S2 Z! O6 ^' t6 |
,并且提供matlab矩阵的部分能力。这次MATLAB的全面升级,对于numpy无疑提出了严峻的. Q* H$ g1 p; j$ H8 _
挑战。( [; Y: B2 h; R5 S
3 O7 q# J: o' W2 u8 b/ }. A除了程序设计结构方面的变化,MATLAB 2008在多个方面也有重要进步。
_4 @* c. E. x# H* i2 z# v+ d- S4 S9 N; b; b
它的优化工具箱(optimization toolbox)首次引进了interior point algorithm。interio
! G- a" z6 N* tr point algorithm在convex optimization中占有重要地位,并且性能优越。MATLAB 7 ]: o; h; U$ ], [! }9 e
optimization toolbox一直以为因为使用老式算法,性能太差,而饱受诟病。这次终于引" ]" x, P2 \. d3 }4 H
入interior point,希7 T3 u, V: N* f1 r' F7 O5 }5 x+ V5 h
望它的优化性能能得到显著改善。4 ^: T9 k! p& Z# c A
重写核心JIT引擎(运行时编译,可以显著提高运行效率),并且采用了最新的BLAS/Lapac4 Z/ P% t8 h" y; c) S
k核心,运算速度会有相当程度的提高。另外,还大幅度提高了对sparse matrix的计算速
4 f3 T/ M$ k G: l2 X% Q% H度
# i7 w* l% o+ `. Y# i. o9 i% L: p。
- F: Z u3 u( M7 i* g它的统计工具箱增强了对很多著名的统计算法的有力支持,比如HMM, GMM,还有NMF(Nonn7 V( }. _, p% J, O9 a2 M( e
egative Matrix Factorization),并且开始引入对蒙特卡罗采样的支持。6 j9 f) @* M* I/ i# k
Windows 版本下载:: ?3 Z6 E/ A3 n' R
6 a1 Q$ A, a) sed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].TLF-SOFT-Mathworks
" u4 c: |' H/ g& \0 B6 I.Matlab.R2008a.DVD.ISO-TBE.iso|4035084288|FB8CAA9360B243A21B5DB25D2DD96B92|h=KN6 M9 C1 O- u+ |; m m. I
BMQIGIWDPTOWBUCFZ6TMATIBU3DVLS|/4 B; Z3 z. O! C0 U+ h0 ~* ^
1 c& N: o/ p0 Y& c- b' J
+ g |0 a; o! o5 L
; f, }4 i5 f9 ?Unix(Linux)版本下载:
: w9 v5 ]8 J9 f8 C. j0 S% B" `
3 g9 H7 W! m7 v+ l4 f( F+ m4 med2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R0 i6 {! \& y( _5 V6 B7 s
2
5 Y) C& c6 {5 V) f1 m+ d008a.UNIX.DVD.ISO-TBE.iso|3889903616|DDAA56CA614BF07712D0A17828681316|h=773TVKT, D7 n, T5 h' ~& |' Q
RWRHN6WQXZBJWWMSIXGYA4QMH|/ |
|