what is the single command?????????
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
VIJAY
el 17 de Ag. de 2018
Comentada: VIJAY
el 20 de Ag. de 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 comentarios
Respuesta aceptada
Stephen23
el 17 de Ag. de 2018
Editada: Stephen23
el 17 de Ag. de 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 comentarios
Stephen23
el 17 de Ag. de 2018
@VIJAY: I hope that it helps. Remember to accept the answer. Accepting my answer is the easiest way to thank me.
Más respuestas (1)
Rik
el 17 de Ag. de 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 comentarios
Stephen23
el 17 de Ag. de 2018
Editada: Stephen23
el 17 de Ag. de 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!
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!