Matlab稀疏矩阵
SPARSE函數
?
S = sparse(A)???----->???把全矩陣轉換為稀疏矩陣
?
S = sparse(i,j,s,m,n,nzmax)???----->???標準形式
?
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函數也不會報錯 因為s 會自動降維,這里需要注意matlab的序號排列規則;
??????????其規則為 列優先,以二位矩陣為例如:
??????????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 規則同上,因此 sparse(i,j,s) 實際意義為 a[i,j]= s(k),s中的第k個數,位于角標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用法: 在有限差分計算中,考慮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???
觀察此矩陣,對角線系數為0,下三角第二對角線 -2/3,第三對角線 1/12, 末尾兩位-1/12,2/3
算法:
N =6;
e = ones(N,1);D = sparse(1:N,[2:N 1],2*e/3,N,N)...?????????% 生成第二對角線的 2/3 和末尾第一位的 2/3
- sparse(1:N,[3:N 1 2],e/12,N,N);????????????% 生成第三對角線的 -1/12 和末尾第二位的 -1/12
D = (D-D');??????????????????????????????????% 生成上三角陣
rats(D)??????????????????????????????????????% 全矩陣分數格式顯示矩陣 D
?
差分算法 W = D*u/h???W,u均為列向量,h是間距
總結
以上是生活随笔為你收集整理的Matlab稀疏矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 径向基神经网络(实例故障分类)
- 下一篇: MATLAB图像函数 块和邻域的处理