|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
首先,在matlab里面,图形化一个矩阵的命令为spy。
- C/ ]! n0 w' v# h$ H) {4 P假如我们有一个矩阵A,保存在A.mat文件中。; M) F6 R. y6 A" |) j# M: c
load A;
6 ~( z( j1 c8 x% bspy(A);# W* \- q, `4 r
会生成如下图形,蓝色的点代表非零元素。6 x0 f, p# P/ t1 L& _, J2 y" J% ^
# K" J* [4 w+ @" M. |/ A9 S4 M
可以看到矩阵中的元素零散分布,bandwidth很大,这样利用迭代法求解时,收敛速度会降低。/ S- \$ a% P$ W# x+ \
但如果我们将矩阵的元素都重新排序,会如何呢?
7 u% ~1 _; w# Z8 N; Q' g6 {我们利用三种方法:7 U0 z# w+ {5 F) l8 L* Y- y
figure;
# q: d- `" X, d4 nsubplot(2,2,1);$ N$ K' D/ O; C; a. v. p* L
spy(A);
. {# G1 g* S" W" z$ q" n3 D& p: e, K. stitle('original');0 d; H1 b( F+ _) p# g- Q
subplot(2,2,2);
}8 \: @/ M c9 mp = symrcm(A);
1 L6 i/ M4 K5 y2 Wspy(A(p,p));
4 f( {$ s7 ?" Ktitle('symrcm');) F4 F& t. x6 |+ C, }
! f; C1 B$ o- N/ ~; R
subplot(2,2,3);% L- `1 @2 s3 b- n' j3 Z
q = colperm(A);
& G5 Y, X/ [' u. D: w) j& s& Yspy(A(q,q));
) [6 p' d3 o8 q- W" P. Gtitle('colperm');5 g# Z3 c* \! C6 @2 L/ H3 w
- ?; j) F3 a% gsubplot(2,2,4);# ^7 \. N! N. }" W: Q3 D
r = symamd(A);
0 {. J$ t" W$ x1 N( }spy(A(r,r));
2 y+ M0 Z/ f$ d0 ?& t/ Utitle('symamd');
2 _0 L3 v0 w% g C" ?+ P2 x8 Z8 v结果如下:1 ? Z; G" M7 {1 u
\. l$ X# A9 X! k: u
! d* ] w: l: g
0 U1 E6 l, O2 r! @( V可以看到,重新排序后矩阵的结构变的更规则,bandwidth变小,尤其是sysrcm方法。/ `* q( T( @3 Z4 G$ V
文件下载:
9 N ~6 Q, X* L. g0 G1 ^6 B( Ghttp://cid-b505e89fcbf74c29.office.live.com/self.aspx/File^_Storer/Matlab/matrix^_reorder.7z. }$ m( g0 u; \7 U- U
稍后会给出rcm方法的fortran调用界面。
' U3 @! I6 W" D( q' R8 T$ v( O& I4 h1 w. b1 W3 c# Z
|
|