Change index of element in matrix with constraint

3 ビュー (過去 30 日間)
Ideth Kara
Ideth Kara 2022 年 8 月 22 日
コメント済み: Ideth Kara 2022 年 8 月 22 日
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 !
  1 件のコメント
Riccardo Spica
Riccardo Spica 2022 年 8 月 22 日
Hi,
does this work?
N =60;
k = 3;
C = eye(N);
C = C(repelem(1:N,1,k),:);

サインインしてコメントする。

回答 (1 件)

Chunru
Chunru 2022 年 8 月 22 日
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 件のコメント
Chunru
Chunru 2022 年 8 月 22 日
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 2022 年 8 月 22 日
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]

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by