在matlab中交换矩阵的两列

时间:2012-12-30 01:46:48

标签: matlab

有没有办法在matlab中交换两列,以便可以在一个语句中完成?我知道A(:,[i,j])=A(:,[j,i])可以胜任这项工作。但我希望它的格式为swap_column(A, i, j)。是否只使用内置的内置或简单操作?

2 个答案:

答案 0 :(得分:3)

两种可能性:

  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) );
    

  3. 您使用矩阵的名称调用此函数,而不是矩阵本身:

      

    swap_cols('A',i,j);

    干杯!

答案 1 :(得分:2)

permute在Matlab中完成工作

A = permute(A,[2 1]);