找回密码
 注册
关于网站域名变更的通知
查看: 563|回复: 1
打印 上一主题 下一主题

Matlab:Reordering of Spare Matrix

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-5 14:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
首先,在matlab里面,图形化一个矩阵的命令为spy。1 v$ n- W6 q; N' b, p% \
假如我们有一个矩阵A,保存在A.mat文件中。; K" _8 L1 }5 R# X. @# T: R# j. `
load A;) C5 F5 h4 z" p) I! V
spy(A);4 N* A4 Z5 B& R* x2 m# X
会生成如下图形,蓝色的点代表非零元素。, ^% \- z) `+ Y* c, ~0 E

/ B' U/ U3 z+ ]- b! s. ]& G9 v可以看到矩阵中的元素零散分布,bandwidth很大,这样利用迭代法求解时,收敛速度会降低。( Q' n+ l$ d5 V
但如果我们将矩阵的元素都重新排序,会如何呢?& b5 y: Q5 |# w" ~- ~
我们利用三种方法:
8 v; o; R8 ^* b% ifigure;
6 B7 R0 Y: l& ^% E# G) ssubplot(2,2,1);! i5 l. H; N+ Z) i
spy(A);
- [4 x; G( ~$ Ltitle('original');
% b, D' v2 W# q3 msubplot(2,2,2);
3 v) G3 G; i, P- op = symrcm(A);
# @7 k* L; a) a1 ]9 [' L* p" r5 Zspy(A(p,p));
1 ]! j! e9 x# z) Y% {# F4 Ytitle('symrcm');
1 @. G& Z# E8 U
% ^+ y$ ^3 T/ X6 X* nsubplot(2,2,3);
( |- q+ E7 I' k2 E' x/ ^, d% Q0 uq = colperm(A);/ ?' Z- R2 Y! G* L& x
spy(A(q,q));# o8 e+ w0 r7 t
title('colperm');
$ I* K3 C0 [0 s$ I$ y+ y8 W/ Q: ]" I% H4 j
subplot(2,2,4);
( l" t: J) T$ k$ c0 Wr = symamd(A);
  y6 W3 _8 |+ G: W3 \spy(A(r,r));
0 E3 I( D7 Q( p+ `6 x  e0 dtitle('symamd');& \, F4 O, k: L
结果如下:- F) H: J) D- S' |8 U0 ~
4 _- q2 u( x4 N: t
6 _# d& @4 N1 B% w* N0 T
) m8 e+ x% @, ~0 B* S5 h
可以看到,重新排序后矩阵的结构变的更规则,bandwidth变小,尤其是sysrcm方法。
( \2 V! |  Y4 D: G( p+ X% i文件下载:. @- v4 u$ ]# y, f* g
http://cid-b505e89fcbf74c29.office.live.com/self.aspx/File^_Storer/Matlab/matrix^_reorder.7z- P( F2 f0 c% k9 M* @
稍后会给出rcm方法的fortran调用界面。
6 D6 F2 a! v$ y$ D2 i) g; e- R$ x  Z& N. ]  D; f  A2 p* c$ f

该用户从未签到

2#
发表于 2020-8-5 15:57 | 只看该作者
                              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-15 04:21 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表