有没有办法在 matlab 中交换两列,以便可以在一个语句中完成?我知道A(:,[i,j])=A(:,[j,i])
可以完成这项工作。但我希望它是形式swap_column(A, i, j)
。是否有这样的内置或仅使用内置的简单操作?
问问题
13462 次
2 回答
3
两种可能:
如果您同意,
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 回答