Azzera filtri
Azzera filtri

Change index of element in matrix with constraint

1 visualizzazione (ultimi 30 giorni)
Ideth Kara
Ideth Kara il 22 Ago 2022
Commentato: Ideth Kara il 22 Ago 2022
Hi all!
i have i binary matrix A(180,60), in each column i have 3 "ones" and only "one" by row,the sum of each row equal to 1.
i used this , but i had 3 "ones" in the 3 successive rows. How can i change the index of "1"?
M = 180; N =60;
k = 3;
C = repelem(eye(N), k, 1);
NEED URGENT HELP !

Risposte (1)

Chunru
Chunru il 22 Ago 2022
A = repmat(eye(6), 3, 1) % change 6 to 60
A = 18×6
1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0
% if you need random permutation
B = A(randperm(6*3), :)
B = 18×6
0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0
  7 Commenti
Chunru
Chunru il 22 Ago 2022
I could not understand your requirements:
"i need 3 'ones' in the 3 successive rows but with different position. as condition , after the 3 rows , the rest os first column will be "zero", after the next 3 rows , the rest of second column "zero",..."
Ideth Kara
Ideth Kara il 22 Ago 2022
i will try to explain by using independent matrix :
A [3,6]
1 0 0 0 0 0
1 0 0 0 0 0
0 1 0 0 0 0
B[3,7]
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
C[3,8]
0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
D[3,9]
0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0
until i get [3,60]. but all this will be in the same matrix [180,60]

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by