Matlab稀疏矩阵
SPARSE函數(shù)
?
S = sparse(A)???----->???把全矩陣轉(zhuǎn)換為稀疏矩陣
?
S = sparse(i,j,s,m,n,nzmax)???----->???標(biāo)準(zhǔn)形式
?
S = sparse(i,j,s,m,n), nzmax=length(s)
?
S = sparse(i,j,s), m = max(i), n = max(j)
?
S = sparse(m,n) == sparse([],[],m,n,0)
?
————————————————————————————————
備注: s 通常為一維向量 如 s = ones(N,1) 或 s = ones(1,N);
??????????若為多維向量 sparse函數(shù)也不會(huì)報(bào)錯(cuò) 因?yàn)閟 會(huì)自動(dòng)降維,這里需要注意matlab的序號(hào)排列規(guī)則;
??????????其規(guī)則為 列優(yōu)先,以二位矩陣為例如:
??????????a(1)??a(n+1)??... a(mn+1)
??????????a(2)??a(n+2)??...?a(mn+2)
??????????...????...????...???...
??????????a(n)??a(n+n)??...?a(mn+n)
?
??????i,j 規(guī)則同上,因此 sparse(i,j,s) 實(shí)際意義為 a[i,j]= s(k),s中的第k個(gè)數(shù),位于角標(biāo)i,j的位置上
?
例如:?????e = [1 3 5; 2 4 6];???????????????????% e為2D矩陣
????????????D = =sparse(1:6,[2:6 1],e,6,6);???????% 稀疏為6*6的矩陣
????????????full(D)???????????????????????????????% 滿矩陣顯示
_______________________________________________
e =
?????1?????3?????5
?????2?????4?????6
D =
???(6,1)????????6
???(1,2)????????1
???(2,3)????????2
???(3,4)????????3
???(4,5)????????4
???(5,6)????????5
full(D)?=
?????0?????1?????0?????0?????0?????0
?????0?????0?????2?????0?????0?????0
?????0?????0?????0?????3?????0?????0
?????0?????0?????0?????0?????4?????0
?????0?????0?????0?????0?????0?????5
?????6?????0?????0?????0?????0?????0
_____________________________________________________
?
sparse用法: 在有限差分計(jì)算中,考慮4階差分算法,其稀疏矩陣為
以6*6矩陣為例:
ans =
???????0????????????2/3??????????-1/12???????????0????????????1/12?????????-2/3????
?????-2/3????????????0????????????2/3??????????-1/12???????????0????????????1/12???
??????1/12?????????-2/3????????????0????????????2/3??????????-1/12???????????0?????
???????0????????????1/12?????????-2/3????????????0????????????2/3??????????-1/12???
?????-1/12???????????0????????????1/12?????????-2/3????????????0????????????2/3????
??????2/3??????????-1/12???????????0????????????1/12?????????-2/3????????????0???
觀察此矩陣,對(duì)角線系數(shù)為0,下三角第二對(duì)角線 -2/3,第三對(duì)角線 1/12, 末尾兩位-1/12,2/3
算法:
N =6;
e = ones(N,1);D = sparse(1:N,[2:N 1],2*e/3,N,N)...?????????% 生成第二對(duì)角線的 2/3 和末尾第一位的 2/3
- sparse(1:N,[3:N 1 2],e/12,N,N);????????????% 生成第三對(duì)角線的 -1/12 和末尾第二位的 -1/12
D = (D-D');??????????????????????????????????% 生成上三角陣
rats(D)??????????????????????????????????????% 全矩陣分?jǐn)?shù)格式顯示矩陣 D
?
差分算法 W = D*u/h???W,u均為列向量,h是間距
總結(jié)
以上是生活随笔為你收集整理的Matlab稀疏矩阵的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 径向基神经网络(实例故障分类)
- 下一篇: MATLAB图像函数 块和邻域的处理