Swapping the columns based on matrix even length

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

 Akzeptierte Antwort

Johannes Fischer
Johannes Fischer am 18 Sep. 2019
Bearbeitet: Johannes Fischer am 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(:))

Weitere Antworten (1)

madhan ravi
madhan ravi am 18 Sep. 2019
Bearbeitet: madhan ravi am 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 Kommentare

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))))
Thanks Rik :) !

Melden Sie sich an, um zu kommentieren.

Kategorien

Produkte

Version

R2018a

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by