Swapping the columns based on matrix even length

1 vue (au cours des 30 derniers jours)
Venkat Ta
Venkat Ta le 18 Sep 2019
Commenté : madhan ravi le 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

Réponse acceptée

Johannes Fischer
Johannes Fischer le 18 Sep 2019
Modifié(e) : Johannes Fischer le 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(:))

Plus de réponses (1)

madhan ravi
madhan ravi le 18 Sep 2019
Modifié(e) : madhan ravi le 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 commentaires
Rik
Rik le 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))))
madhan ravi
madhan ravi le 18 Sep 2019
Thanks Rik :) !

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange

Tags

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by