Mathematics |
 |
標準数学演算
スパース行列は、つぎのルールに乗っ取って計算を進めます。
- 行列を入力して、スカラまたはベクトルを出力する関数は、必ずフルストレージ書式で出力を作成します。例えば、関数
size
は、入力がフルまたはスパースどちらでもフルベクトルを必ず出力します。
- スカラまたはベクトルを入力して、行列を出力する
zeros
, ones
, rand
, eye
のような関数は、必ずフルの結果を出力します。これは、予期できないスパース性を取り込まないようにするために必要です。zeros(m,n)
のスパース行列版は、単にsparse(m,n)
です。rand
,eye
のスパース行列版は、各々sprand
,speye
です。関数ones
のスパース行列版はありません。
- 行列を入力として、行列またはベクトルを出力する単項関数は、オペランドのストレージクラスを保存します。
S
がスパース行列なら、chol(S)
もまたスパース行列で、diag(S)
はスパースベクトルです。max
やsum
のような列方向に機能する関数は、これらのベクトルがすべて非ゼロとしてもスパースベクトルを出力します。このルールに従わない重要なものは、関数sparse
,full
です。
- バイナリ演算子は、両方のオペランドがスパースならばスパースを出力し、両方のオペランドがフルならばフルを出力します。フルとスパースがミックスされたものは、演算がスパース性を保存しない限り、結果はフルになります。
S
がスパースで、F
がフルならば、S+F
,S*F
,F\S
はフルに、一方S.*F
,S&F
はスパースになります。多くの場合、結果は、行列にゼロ要素がほとんど含まれないけれどもスパースになります。
- 関数
cat
かまたはスパース括弧のどちらかを使って行列の置換を行なうと、混合されたオペランドに対してスパース性をもつ結果を作成します。
- 右辺側のサブ行列インデックス設定法は、オペランドのストレージフォーマットを保存します。
T = S(i,j)
は、S
がスパースで、i
,j
がスカラまたはベクトルのどちらかであると、スパースな結果を出力します。左辺のサブ行列のインデックス設定法は、左辺の行列のストレージフォーマットを変更しません。
| 計算について | | 置換と並べ替え |  |