Swapping the columns based on matrix even length
1 view (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 Get Started with MATLAB 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!