2

1つのステートメントで実行できるように、matlabで2つの列を交換する方法はありますか? 私A(:,[i,j])=A(:,[j,i])は仕事ができることを知っています。しかし、私はそれを形にしたいと思いswap_column(A, i, j)ます。組み込みのみを使用した組み込みまたは単純な操作はありますか?

4

2 に答える 2

3

2 つの可能性:

  1. 同意する場合は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]);
    

  2. 出力引数を持たない「演算子」のような関数が必要な場合は、次のようなものが必要になる場合があります。

    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 に答える