簡體   English   中英

在Matlab中交換矩陣的兩列

[英]swap two columns of a matrix in matlab

有沒有一種方法可以在matlab中交換兩列,從而可以在一條語句中完成? 我知道A(:,[i,j])=A(:,[j,i])可以完成這項工作。 但我希望它的形式為swap_column(A, i, j) 是否有這樣的內置或僅使用內置的簡單操作?

兩種可能性:

  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(:,[ij]) = A(:,[ji]); 

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

干杯!

置換在Matlab中完成工作

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM