# what is the single command?????????

9 views (last 30 days)
VIJAY on 17 Aug 2018
Commented: VIJAY on 20 Aug 2018
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 CommentsShowHide 1 older comment
VIJAY on 17 Aug 2018
thank you guy but rows are repeated.........

Sign in to comment.

### Accepted Answer

Stephen on 17 Aug 2018
Edited: Stephen on 17 Aug 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 CommentsShowHide 3 older comments
Stephen on 17 Aug 2018
@VIJAY: I hope that it helps. Remember to accept the answer. Accepting my answer is the easiest way to thank me.

Sign in to comment.

### 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 CommentsShowHide 1 older comment
VIJAY on 20 Aug 2018
Thank you for answering..........

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!

Translated by