Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - 日本語


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

参照

  • sp2adj — 疎行列を隣接形式に変換する
  • sparse — 疎行列を定義
  • spcompack — 圧縮隣接表現に変換する
  • spget — 疎行列のエントリを取得

参考文献

"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 >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:43:10 CEST 2023