what is the single command?????????
    4 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I want to create matrix size is 100*12. Each row contain only 5 zeros other elements are 1. for ex
A=[1 1 1 0 0 1 1 0 0 0 1 1 ;
   0 0 1 1 0 0 1 1 0 1 1 1;]
Note: Nobody row is repeated
2 commentaires
Réponse acceptée
  Stephen23
      
      
 le 17 Août 2018
        
      Modifié(e) : Stephen23
      
      
 le 17 Août 2018
  
      R = 100; % rows
C = 12;  % columns
N = 5;   % number of 1's.
cmb = nchoosek(1:C,N);  % all unique column combinations.
idx = randperm(size(cmb,1)); % indices to randomize combinations.
idc = cmb(idx(1:R),:); % (col index) pick first 100 random combinations.
idr = ndgrid(1:R,1:N); % (row index).
mat = ones(R,C);       % preallocate output matrix.
mat(sub2ind([R,C],idr,idc)) = 0
Check:
>> all(sum(mat,2)==7) % all rows sum to seven.
ans = 1
>> all(ismember(mat(:),0:1)) % only 0's and 1's.
ans = 1
>> size(unique(mat,'rows')) % all rows are unique.
ans =
   100    12
4 commentaires
  Stephen23
      
      
 le 17 Août 2018
				@VIJAY: I hope that it helps. Remember to accept the answer. Accepting my answer is the easiest way to thank me.
Plus de réponses (1)
  Rik
      
      
 le 17 Août 2018
        First generate all combinations, and then select 100 from them:
total_row_length=12;
number_of_zeros=5;
selected_number_of_rows=100;
v=1:total_row_length;
col_positions = nchoosek(v,number_of_zeros);
row_positions=repmat((1:size(col_positions,1))',1,size(col_positions,2));
out=ones(size(col_positions,1),total_row_length);
inds=sub2ind(size(out),row_positions,col_positions);
out(inds)=0;
%select a random sample from all possible rows
selected_rows=randperm(size(out,1),selected_number_of_rows);
result=out(selected_rows,:);
2 commentaires
  Stephen23
      
      
 le 17 Août 2018
				
      Modifié(e) : Stephen23
      
      
 le 17 Août 2018
  
			@Star Strider: can you please give explanations for your votes, rather than just disappearing without comment. I am interested to know what you found in Rik Wisselink's answer, that you felt was missing in mine (they are almost identical). Many thanks!
Voir également
Catégories
				En savoir plus sur Matrix Indexing dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


