Filter löschen
Filter löschen

Change index of element in matrix with constraint

1 Ansicht (letzte 30 Tage)
Ideth Kara
Ideth Kara am 22 Aug. 2022
Kommentiert: Ideth Kara am 22 Aug. 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 !

Antworten (1)

Chunru
Chunru am 22 Aug. 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 Kommentare
Chunru
Chunru am 22 Aug. 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 am 22 Aug. 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]

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by