Swapping the columns based on matrix even length
    6 views (last 30 days)
  
       Show older comments
    
    Venkat Ta
 on 18 Sep 2019
  
    
    
    
    
    Commented: madhan ravi
      
      
 on 18 Sep 2019
            Is there any pre-function in Matlab to change the column order below like it?
Original column orders = 1 2 3 4 5 6 7 8 9 10
Modified coulmn orders = 2 1 4 3 6 5 8 7 10 9
cell format and matrix format how can it change?
Thanks
0 Comments
Accepted Answer
  Johannes Fischer
      
 on 18 Sep 2019
        
      Edited: Johannes Fischer
      
 on 18 Sep 2019
  
      Assuming that there is always an even number of columns:
matrix = repmat(1:10, [3, 1]);
L = size(matrix, 2);
ind = [2:2:L; 1:2:L];
matrix_reorderedColumns = matrix(:, ind(:))
0 Comments
More Answers (1)
  madhan ravi
      
      
 on 18 Sep 2019
        
      Edited: madhan ravi
      
      
 on 18 Sep 2019
  
      No matter odd or even:
ix=(2:2:size(matrix,2)) + [0;-1];
% if > 2016b ix = bsxfun(@plus, 2:2:size(a,2), [0;-1])
Wanted = matrix(:,[ix(:);end.*(mod(end,2)~=0)])
2 Comments
  Rik
      
      
 on 18 Sep 2019
				Or with a few small tweaks:
N=10;%set to something odd or even to check both
matrix = repmat(1:N, [3, 1]);
ix=(2:2:(size(matrix,2)+1)) + [0;-1];
% if > 2016b ix = bsxfun(@plus, 2:2:size(a,2), [0;-1])
Wanted = matrix(:,ix(ismember(ix,1:size(matrix,2))))
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


