I have a matrix v=[0 1;1 0;0 1;1 0] I want to shuffle this matrix, which will give
x=[1 0;1 0;0 1;0 1] x=[1 0;0 1;1 0;0 1]
I mean all the possibilities of this type of arrangement. As I want to generate the chromosome for genetic algorithm

 Akzeptierte Antwort

Guillaume
Guillaume am 4 Jun. 2015

1 Stimme

Assuming you just want to shuffle the rows, I would do it like this:
v = [0 1;1 0;0 1;1 0];
[~, ~, rowidx] = unique(v, 'rows'); %identical rows have the same index in rowidx
rowperms = unique(perms(rowidx), 'rows'); %generate all permutations of the indices, and remove duplicate
allv = cellfun(@(rowperm) v(rowperm, :), num2cell(rowperms, 2), 'UniformOutput', false)

3 Kommentare

Aryama Mandal
Aryama Mandal am 4 Jun. 2015
If I don't want to remove he duplicate than.
Guillaume
Guillaume am 4 Jun. 2015
Then don't bother with the first two lines and generate rowperms simply with:
rowperms = perms(1:size(v, 1));
Aryama Mandal
Aryama Mandal am 4 Jun. 2015
Thank you.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by