필터 지우기
필터 지우기

matrix of zeros and ones within number of zeros in each rows in-between a limit

조회 수: 2 (최근 30일)
want to have a 30x40 matrix of zeros and ones; however in each row total number of 'ones' must be within 10 to 20.

채택된 답변

Thorsten
Thorsten 2015년 10월 9일
편집: Thorsten 2015년 10월 9일
A = zeros(40,30);
Omin = 10; Omax = 20;
for i = 1:size(A, 2)
r = randperm(40);
ind = r(1:(Omin-1) + randi(Omax - Omin +1)) + (i-1)*40;
A(ind) = 1;
end
A = A';
imshow(A)
sum(A,2)
  댓글 수: 2
Biswanath Mahanty
Biswanath Mahanty 2015년 10월 10일
Thank you for your reply, I got the approach and have the solution
A=zeros(30,40);
for i = 1:size(A,1) %%in each itr a new row to be modified
r=randperm(40); %%randomizing column index
no1s=randi([10,15]); %%no of "0" to be replace with "1" in that row
index=r(1:no1s); %%getting selected column index to be modified "1"
A(i,index)=1; %%column index been converted to "1"
end
Image Analyst
Image Analyst 2015년 10월 10일
Go ahead and mark it as "Accepted" then, so he gets reputation points.

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

추가 답변 (1개)

John D'Errico
John D'Errico 2015년 10월 9일
So generate a matrix with random ones and zeros. Discard any rows that fail this test, and regenerate just those rows. WTP?
Since you have not said what the distribution of the number of ones is, I cannot offer a complete solution, but it is simple in any case. If you will have 17 ones in a row, then generate a row vector with 17 ones, and 23 zeros. Then randomly permute the elements.

카테고리

Help CenterFile Exchange에서 Random Number Generation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by