what is the single command?????????
Show older comments
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
Accepted Answer
More Answers (1)
Rik
on 17 Aug 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 Comments
@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!
VIJAY
on 20 Aug 2018
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!