could anyone help me how to display all the numbers inaddition to the numbers present.

조회 수: 5 (최근 30일)
I a having a system with maximum number of users to be 6.
A =[1 2;
1 3;
2 5;
2 4;
3 5;
4 6
4 5]
In each row i can get only two numbers out of 6.
But i want to display all the numbers in each row of the matrix in the following manner
[1 2 3 4 5 6;
1 3 2 4 5 6;
2 5 1 3 4 6;
2 4 1 3 5 6;
3 5 1 2 4 6;
4 6 1 2 3 5;
4 5 1 2 3 4]
So I want to reshape the matrix A inorder to get the above matrix
Could anyone please help me on this.

채택된 답변

Stephen23
Stephen23 2019년 9월 19일
>> A = [1,2;1,3;2,5;2,4;3,5;4,6;4,5]
A =
1 2
1 3
2 5
2 4
3 5
4 6
4 5
>> F = @(v)[v,setdiff(1:6,v)];
>> M = cell2mat(cellfun(F,num2cell(A,2),'uni',0))
M =
1 2 3 4 5 6
1 3 2 4 5 6
2 5 1 3 4 6
2 4 1 3 5 6
3 5 1 2 4 6
4 6 1 2 3 5
4 5 1 2 3 6

추가 답변 (1개)

darova
darova 2019년 9월 19일
I'd divide you task in several steps:
  1. Use for loop to consider each row separately
  2. Use ismember() to identificate which numbers (1:6) are members of a current row
  3. Add to the current row number that are not members
  댓글 수: 5
Adam
Adam 2019년 9월 19일
Why are you using randperm? setdiff should return 4 values for each row, which should be assigned (in the order they are returned, so far as I can see from what you want) as columns 3 to 6 or that row of the result matrix.
jaah navi
jaah navi 2019년 9월 19일
could you please help me to get the following result
[1 2 3 4 5 6;
1 3 2 4 5 6;
2 5 1 3 4 6;
2 4 1 3 5 6;
3 5 1 2 4 6;
4 6 1 2 3 5;
4 5 1 2 3 4]

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by