adj2sp
隣接形式を疎行列に変換.
呼び出し手順
A=adj2sp(xadj,iadj,v) A=adj2sp(xadj,iadj,v,mn)
引数
- xadj
長さ (n+1)の整数ベクトル.
j=1:n
の場合, 浮動小数点整数xadj(j+1)-xadj(j)
は j列における非ゼロエントリの数です.- iadj
nz行1列の浮動小数点整数の行列, 非ゼロエントリの行添字.
j=1:n
および,k = xadj(j):xadj(j+1)-1
に関して, 浮動小数点整数i = iadj(k)
は 非ゼロエントリ #k の行添字です.- v
nz行1列の浮動小数点整数の行列, Aの非ゼロエントリ.
j=1:n
および,k = xadj(j):xadj(j+1)-1
に関して, 浮動小数点整数Aij = v(k)
は 非ゼロエントリ #k の値です.- mn
1行2列または2行1列の浮動小数点整数の行列(オプション),
mn(1)
はAの行数,mn(2)
はAの列数です.mn
が指定されない場合,mn=[m,n]
は,m=max(iadj)
およびn=size(xadj,"*")-1
がデフォルトとなります.- A
m行n列実数または複素数の疎行列 (nz 個の非ゼロエントリ)
説明
adj2sp は,隣接形式を疎行列に変換します. 隣接形式の値は列毎に保存されています. これは,この形式がしばしば "Compressed sparse column" または CSCと呼ばれる理由です.
例
以下の例では,隣接形式から疎行列を作成します. その後,期待した疎行列と一致するかどうかを確認します.
xadj = [1 3 4 7 9 11]'; iadj = [3 5 3 1 2 4 3 5 1 4]'; v = [1 2 3 4 5 6 7 8 9 10]'; B=adj2sp(xadj,iadj,v) A = [ 0 0 4 0 9 0 0 5 0 0 1 3 0 7 0 0 0 6 0 10 2 0 0 8 0 ]; C=sparse(A) and(B==C)
以下の例では,隣接形式から疎行列を作成します. その後,期待した疎行列と一致するかどうかを確認します.
xadj = [1 2 3 4 5 5 6 6 7 8 9]'; iadj = [2 5 2 3 1 2 7 6]'; v = [3 7 5 3 6 5 2 3]'; C=adj2sp(xadj,iadj,v) A = [ 0 0 0 0 0 6 0 0 0 0 3 0 5 0 0 0 0 5 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 ]; B=sparse(A) and(B==C)
以下の例では,mnパラメータの使用法を確認します. mnパラメータとxadjおよびiadjの実際の内容の整合性をadj2spで確認します.
xadj = [1 2 3 4 5 5 6 6 7 8 9]'; iadj = [2 5 2 3 1 2 7 6]'; v = [3 7 5 3 6 5 2 3]'; mn=[7 10]; C=adj2sp(xadj,iadj,v,mn)
以下の例では,3行3列の疎行列を作成します. この例は, SciPyの文書からの引用です.
xadj = [1,3,4,7] iadj = [1,3,3,1,2,3] v = [1,2,3,4,5,6] full(adj2sp(xadj,iadj,v))
前のスクリプトは以下の出力を生成します.
-->full(adj2sp(xadj,iadj,v)) ans = 1. 0. 4. 0. 0. 5. 2. 3. 6.
以下の例では,sp2adjおよびadj2sp関数が逆関数であることを 確認します.
// Templates for the Solution of Algebraic Eigenvalue Problems: a Practical Guide // Edited by Zhaojun Bai, James Demmel, Jack Dongarra, Axel Ruhe, and Henk van der Vorst // "Sparse Matrix Storage Formats", J. Dongarra // http://web.eecs.utk.edu/~dongarra/etemplates/book.html A = [ 10 0 0 0 -2 0 3 9 0 0 0 3 0 7 8 7 0 0 3 0 8 7 5 0 0 8 0 9 9 13 0 4 0 0 2 -1 ]; A = sparse(A) // To get the Compressed Sparse Column (CSC) : [col_ptr,row_ind,val]=sp2adj(A) // To convert back to sparse: AAsp=adj2sp(col_ptr,row_ind,val) // Check the conversion AAsp - A // To get the Compressed Sparse Row (CSR) : [row_ptr,col_ind,val]=sp2adj(A') // To convert back to sparse: AAsp=adj2sp(row_ptr,col_ind,val)' // Check the conversion AAsp - A
参考文献
"Implementation of Lipsol in Scilab", Hector E. Rubio Scola, INRIA, Decembre 1997, Rapport Technique No 0215
"Solving Large Linear Optimization Problems with Scilab : Application to Multicommodity Problems", Hector E. Rubio Scola, Janvier 1999, Rapport Technique No 0227
"Toolbox Scilab : Detection signal design for failure detection and isolation for linear dynamic systems User's Guide", Hector E. Rubio Scola, 2000, Rapport Technique No 0241
"Computer Solution of Large Sparse Positive Definite Systems", A. George, Prentice-Hall, Inc. Englewood Cliffs, New Jersey, 1981.
Report an issue | ||
<< Sparse Matrix Conversion | Sparse Matrix Conversion | full >> |