Mathematics | ![]() ![]() |
スパース行列の可視化
MATLABは、スパース行列に関する情報を量的にも、グラフィカルにも表示する関数をいくつか用意しています。
非ゼロ要素に関する情報
スパース行列の非ゼロ要素に関する高水準の情報を得る関数がいくつか用意されています。
nnz
は、スパース行列の中の非ゼロ要素の数を表します。nonzeros
は、スパース行列の非ゼロ要素すべてを含む列ベクトルです。nzmax
は、スパース行列の非ゼロ要素に対して割り当てられたストレージ総容量を表します。これらのいくつかを試すため、Harwell-Boeingで記述されているものの一つであるスパース行列west0479
をロードします。
load west0479 whos Name Size Bytes Class west0479 479x479 24576 sparse array
この行列は、8ステージの化学蒸留過程をモデル化したものです。
nnz(west0479) ans = 1887 format short e west0479 west0479 = (25,1) 1.0000e+00 (31,1) -3.7648e-02 (87,1) -3.4424e-01 (26,2) 1.0000e+00 (31,2) -2.4523e-02 (88,2) -3.7371e-01 (27,3) 1.0000e+00 (31,3) -3.6613e-02 (89,3) -8.3694e-01 (28,4) 1.3000e+02 . . . ans = 1.0000e+00 -3.7648e-02 -3.4424e-01 1.0000e+00 -2.4523e-02 -3.7371e-01 1.0000e+00 -3.6613e-02 -8.3694e-01 1.3000e+02 . . .
最初、nnz
はデフォルトにより、nzmax
と同じ値であることに注意してください。これは、非ゼロ要素の数が、非ゼロに対して割り当てられるストレージの位置の数と同じだからです。しかし、その後ある配列要素をゼロにしてもMATLABはメモリを開放しません。いくつかの行列要素の値をゼロにすると、nnz
の値が変化しますが、nzmax
の値は変化しません。
必要なら行列にいくつかの非ゼロ要素を加えることができます。しかし、nzmax
のオリジナルな値によって制約を受けるものではありません。
![]() | MATLABの外部からスパース行列を読み込む | スパース行列のグラフィカルな表示 | ![]() |