1つのステートメントで実行できるように、matlabで2つの列を交換する方法はありますか? 私A(:,[i,j])=A(:,[j,i])
は仕事ができることを知っています。しかし、私はそれを形にしたいと思いswap_column(A, i, j)
ます。組み込みのみを使用した組み込みまたは単純な操作はありますか?
13462 次
2 に答える
3
2 つの可能性:
同意する場合は
A=swap_cols(A,i,j);
、単に関数を記述しますfunction A = swap_cols(A,i,j) assert( i > 0 && i < size(A,2) && j > 0 && j < size(A,2) ); A(:,[i j]) = A(:,[j i]);
出力引数を持たない「演算子」のような関数が必要な場合は、次のようなものが必要になる場合があります。
function swap_cols(Astr,i,j) m = evalin('caller', sprintf('size(%s,2);', Astr)); assert( i > 0 && i < m && j > 0 && j < m ); evalin('caller', sprintf('%s(:,[%d %d] = %s(:,[%d,%d]);', Astr, j, i, Astr, i, j) );
マトリックス自体ではなく、マトリックスの名前でこの関数を呼び出します。
swap_cols( 'A', i, j );
乾杯!
于 2012-12-30T08:20:44.953 に答える
2
permute は Matlab で仕事をします
A = permute(A,[2 1]);
于 2016-07-02T19:24:09.190 に答える