|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
首先,在matlab里面,图形化一个矩阵的命令为spy。
- N* O9 U* L% D7 b1 m. w E假如我们有一个矩阵A,保存在A.mat文件中。2 s3 a9 E2 I, L, P/ i! ?% ]
load A;
5 ~, a) I* v" I: Y% Mspy(A);
8 ~6 s0 c" Z z. x会生成如下图形,蓝色的点代表非零元素。
7 D* \6 J9 y! G, F' e
( c; O- Y3 r1 u$ B+ U2 C
可以看到矩阵中的元素零散分布,bandwidth很大,这样利用迭代法求解时,收敛速度会降低。2 P# C6 P, n- u5 A( C
但如果我们将矩阵的元素都重新排序,会如何呢?# Q5 X; ~5 d+ a. `, k* r) |
我们利用三种方法:4 e7 z- {" `! T9 h7 W
figure;- N/ M8 q' [- I
subplot(2,2,1);( }/ V; p* f4 N, @
spy(A);
# n5 r5 T% v; R% Dtitle('original');7 ?8 F, S1 e3 H3 p
subplot(2,2,2);
) l8 {' A4 l- s" `5 x" [ yp = symrcm(A);/ u B$ `; Z9 u% ?' y
spy(A(p,p));
% S0 R& J8 m T" btitle('symrcm');! k6 I# h9 w( K. K
4 k' Q* Y9 e: \) ]8 z2 D* jsubplot(2,2,3);, W6 s2 \! L! W0 e) d/ x' Q4 }' S
q = colperm(A);
3 j- o$ C, @* o/ i- R1 yspy(A(q,q));
0 R6 E8 O- S0 o" j% K$ h$ i5 Ktitle('colperm');- i5 I( K$ w. A M
3 E, ~; }% G2 q- u' }
subplot(2,2,4);+ N0 {' V# V% v* p
r = symamd(A);
3 V6 r+ A. Y/ p8 Aspy(A(r,r));
5 _3 \: O* z9 r# F3 rtitle('symamd');
5 Q& [2 q9 A! \: [结果如下:0 M. p! u0 j9 p" L" }
% l+ j( y- p- Q
6 g$ Z5 n0 n1 h3 I [/ ^/ r( F7 `" X0 \8 Y' O
可以看到,重新排序后矩阵的结构变的更规则,bandwidth变小,尤其是sysrcm方法。
5 \' S s: s" M0 J; ]1 q文件下载:
: F: h0 s( u/ s7 \7 ?; ~% [# @/ zhttp://cid-b505e89fcbf74c29.office.live.com/self.aspx/File^_Storer/Matlab/matrix^_reorder.7z8 n3 q- _8 H4 Z# f% f9 u
稍后会给出rcm方法的fortran调用界面。
" ^" v& x! r! G# `3 W* @) B& n6 U9 {4 V. e0 m. Q
|
|