0

さて、3D 行列 A と別の 3D 行列 Inds があるとします。私がやりたいのは、各スタックA(i,j,:)について、で指定されたインデックスに従ってそのスタックを並べ替えることInds(i,j,:)です。したがって、A(i,j,:)is[1.5 2.5 3.5]Inds(i,j,:)isの場合[3 2 1]、 Aは に(i,j,:)なり[3.5 2.5 1.5]ます。

はい、A(i,j,:)Octave ではベクトルではないことはわかっています。の省略形と考えてくださいpermute(A, [1 3 2])(i,:,j)

これは簡単なはずですが、何らかの理由でそれを行う関数が見つからないようです。

4

1 に答える 1

1

それは非常に単純なmatlabです:

A(i,j,:) = A(i,j,Inds(i,j,:));

Matlab では、インデックスのベクトルを使用して任意のベクトルを再配置できます。

A = [10 20 30 40 50 60];
B = [6 5 4 1 2 3];
A = A(B);

A今でしょ[60 50 40 10 20 30]

が の場合、表記法を使用するときAは、基本的に自由に操作できるベクトルを 扱っています。MxNxPA(i,j,:)Px1

于 2012-04-24T22:18:03.587 に答える