| Programming with MATLAB |
面と行列に操作する関数
matfunディレクトリにある線形代数や行列関数のように、面や行列に対する演算を行う関数は、引数として多次元配列を受け付けません。つまり、matfunディレクトリにある関数や配列演算子*,
^, \, /に対して多次元引数を使うことはできません。多次元引数やオペランドを与えるとエラーになります。
多次元配列内で行列関数や行列に対する演算子を適用するためにインデックスを使うことができます。たとえば、3次元配列Aを作成します。
A = cat(3,[1 2 3;9 8 7;4 6 5],[0 3 2;8 8 4;5 3 5],[6 4 7;6 8 5;... 5 4 3]);
eig(A) ??? Error using ==> eig Input arguments must be 2-D.
しかし、配列内の面にeigを適用することはできます。たとえば、配列の1ページだけ(この場合、2ページ目)をインデックス付けするためにコロン表記を使います。
eig(A(:,:,2))
ans =
-2.6260
12.9129
2.7131
注意
最初のサブスクリプトがコロンでなければ、エラーを避けるためにsqueezeを使わなければなりません。たとえば、
eig(A(2,:,:))は、入力のサイズが[1 3 3]なのでエラーになります。しかし、式
eig(squeeze(A(2,:,:)))は、eigに有効な 2次元行列を渡します。
|
| 要素単位に操作する関数 | データの多次元配列化 |