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次元行列を渡します。
|
![]() |
要素単位に操作する関数 | データの多次元配列化 | ![]() |