|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
首先,在matlab里面,图形化一个矩阵的命令为spy。1 M2 R! ]. D, N; L- H$ k
假如我们有一个矩阵A,保存在A.mat文件中。2 B& j% e+ M& x
load A;
9 j: W1 G: B( L5 vspy(A);
* m; T' u* A) ?$ L, U& p: u会生成如下图形,蓝色的点代表非零元素。6 ^, l6 x0 C5 f) Z C7 u! h D
6 O( I0 n! N' T) P2 c% b' B可以看到矩阵中的元素零散分布,bandwidth很大,这样利用迭代法求解时,收敛速度会降低。
, g) Q. U: u( E9 Z但如果我们将矩阵的元素都重新排序,会如何呢?
: k4 K0 {$ {; I6 O我们利用三种方法:6 h) `9 T* B. k h9 k$ L
figure;2 s; z- R4 ~$ s) L8 v1 g
subplot(2,2,1);
# G5 w- ^4 P, a4 F. |. \& |/ l5 wspy(A);: J/ J6 N7 R1 |! g) r4 ] y
title('original');
% ^2 O; v; T. xsubplot(2,2,2);6 ^; _+ h/ n! x
p = symrcm(A);% H2 a7 T; A' W* I: s# C5 \9 b1 W
spy(A(p,p));# i7 [1 w$ z( f' t* W* T! X7 ?
title('symrcm'); N1 _- ]. W: O0 R- D
! [1 k6 h' I( x" ? i
subplot(2,2,3);3 z. P5 J/ f4 C/ {; ~- I$ S( c
q = colperm(A);2 k: Z! m$ D Z0 r" v6 w) l
spy(A(q,q));
6 v4 m: ?. ~8 m$ A C, wtitle('colperm');
- W1 p+ P" a" b) [6 {
9 w9 f+ K& }7 q! w4 @& ~subplot(2,2,4);1 j: C$ |6 h# w" N5 A, Z) }
r = symamd(A);- |! e- x% {9 H0 h
spy(A(r,r));1 s* n" c/ {# |1 p9 q. N6 _( R
title('symamd');$ ~8 d. ~ I3 m: y2 M! b
结果如下:
, q6 k- f/ f9 T6 I
' ?* d2 w7 B; _5 l0 z0 n5 i
* T C A; F! c% Z" h& s
' d9 ?" O; a! Q* D可以看到,重新排序后矩阵的结构变的更规则,bandwidth变小,尤其是sysrcm方法。+ i& i4 y8 M; G5 a e6 D* U6 ^2 `) ^5 z
文件下载:
( J5 h6 U6 ~! O5 A5 ehttp://cid-b505e89fcbf74c29.office.live.com/self.aspx/File^_Storer/Matlab/matrix^_reorder.7z0 j' c# B0 l4 B% S
稍后会给出rcm方法的fortran调用界面。- D6 E- G, C& {& \7 u- X8 ]
2 y2 B, B4 y: L# ~ |
|