| 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がスカラまたはベクトルのどちらかであると、スパースな結果を出力します。左辺のサブ行列のインデックス設定法は、左辺の行列のストレージフォーマットを変更しません。
| 計算について | | 置換と並べ替え |  |