How can I create a random matrix without repeating any value between column
조회 수: 2 (최근 30일)
이전 댓글 표시
I get two columns with the same value when I generate the matrix. For example,
1 1 3 2 4
4 4 1 4 3
2 2 2 3 1
3 3 4 1 2
I want to get something like the 10 combinations from the 24 combinations(4 factorial).
1 1 3 2 4 1 2 4 3 2
2 4 1 4 3 3 3 1 2 1
3 2 2 3 1 4 1 3 4 3
4 3 4 1 2 2 4 2 1 4
I need the matrix to form the chromosomes for GA.
댓글 수: 3
Dyuman Joshi
2023년 5월 23일
As Steven mentions, it's not clear what is the pattern you are following to obtain the output.
From a cursory glance, it can be observed from the output that the 1st column is sorted and the 6th column corresponds to the indices of the sorted values of the 1st column. But the it's not clear what's the logic behind the columns 7-10.
채택된 답변
David Goodmanson
2023년 5월 24일
편집: David Goodmanson
2023년 5월 24일
Hello Wan,
all columns contain 1 through 4, and all columns are different
a = perms(1:4) % all 24 permutations of 1:4
ind = randperm(24);
ind = ind(1:10) % an index of 10 random integers from 1 to 24, no repeats
b = a(ind,:)' % 10 random choices from the rows of a,
% then transpose to get 4x10 matrix
추가 답변 (1개)
Sulaymon Eshkabilov
2023년 5월 23일
You can use reshape(), randperm(), numel(), size() fcns to create ramdom swaps of the already existing matrix elements:
A1 = [1 1 3 2 4;
4 4 1 4 3;
2 2 2 3 1;
3 3 4 1 2];
A_new = [reshape(A1(randperm(numel(A1))), size(A1)), reshape(A1(randperm(numel(A1))), size(A1))]
댓글 수: 2
Dyuman Joshi
2023년 5월 23일
@Sulaymon Eshkabilov, every column must contain all the numbers [1 2 3 4]. The output from your code does not.
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!