|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
首先,在matlab里面,图形化一个矩阵的命令为spy。
6 p$ ]1 x. ~) d! y! M* |! [假如我们有一个矩阵A,保存在A.mat文件中。7 D) T# [) V0 r F2 m9 v- y
load A;- \. ?. L5 s# L% S
spy(A);
* X1 Q$ q0 g8 p6 L% w7 L1 |会生成如下图形,蓝色的点代表非零元素。! [" s7 t ~+ q$ V! g
4 U& K6 i5 O( w5 x! u可以看到矩阵中的元素零散分布,bandwidth很大,这样利用迭代法求解时,收敛速度会降低。
0 d6 t6 U0 H# d. ?! ]但如果我们将矩阵的元素都重新排序,会如何呢?
% I a: T( {' Z t9 P* d我们利用三种方法:
/ y: m) _" G/ l9 |0 t1 Bfigure;
7 q8 {4 i s. Q T' E& Bsubplot(2,2,1);
t. b# m/ L1 h! Jspy(A);
6 j& r. N" G2 h: ~2 H2 Otitle('original');3 ^3 G2 i _7 V4 o7 a8 i2 O
subplot(2,2,2);+ a9 {% l# i% _0 `- ]# Z
p = symrcm(A);; P- j5 F1 q [6 G' p7 _; P
spy(A(p,p));; f2 w% J! \( U1 E; E1 u
title('symrcm');; m3 d# c9 X( P% s% d
8 r p1 i2 y( \6 r6 Z/ o$ H
subplot(2,2,3);/ l; y5 v- ^+ q5 E: y6 O
q = colperm(A);" m5 ?% n' L& \- F
spy(A(q,q));5 x& z5 P) V o- k. {- I$ a; e
title('colperm');
# F: ]) g1 M/ }1 j2 x$ C- w1 i8 y
. p; f5 C/ f' _& Csubplot(2,2,4);
) w/ Z$ D: Z. q2 n0 Lr = symamd(A);+ d* Y9 m" J6 }$ u
spy(A(r,r));3 V1 `% A: e. b
title('symamd');( J; I: }8 z) e6 P$ I
结果如下:3 u* B4 M/ P. b/ _- q/ R+ |
2 }. P* ^. p6 ~( q0 D0 G
& S+ C8 R4 {/ B# e
3 ]1 J% e! m* d& |可以看到,重新排序后矩阵的结构变的更规则,bandwidth变小,尤其是sysrcm方法。
) T' @% U- f1 D5 w2 l) L$ Z1 u* ?# y文件下载:
" u/ G; Z# Q! Z7 f! Zhttp://cid-b505e89fcbf74c29.office.live.com/self.aspx/File^_Storer/Matlab/matrix^_reorder.7z- ?7 J- ?& g# W9 J/ W$ F8 K$ S
稍后会给出rcm方法的fortran调用界面。
8 W m: |1 ^2 {) c+ z. K" f6 b; \9 h
|
|