有没有办法在matlab中交换两列,以便可以在一个语句中完成?我知道A(:,[i,j])=A(:,[j,i])
可以胜任这项工作。但我希望它的格式为swap_column(A, i, j)
。是否只使用内置的内置或简单操作?
答案 0 :(得分: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);
干杯!
答案 1 :(得分:2)
permute在Matlab中完成工作
A = permute(A,[2 1]);