How to create the combination of zeros and ones matrix in matlab?

9 vues (au cours des 30 derniers jours)
Dong Jun Jung
Dong Jun Jung le 12 Nov 2019
Commenté : Dong Jun Jung le 13 Nov 2019
Hi
I want to create N X n_C_k matrix using combination function C about 0, 1. The 'k' means the number of '1' and all other elements in matrix are '0'.
For example, if N=4 and k=2, the combination shows the results '1100','1010','1001','0110','0101','0011'. And I want to create the matrix like
A=[1 1 1 0 0 0
1 0 0 1 1 0
0 1 0 1 0 1
0 0 1 0 1 1]
How could i do?

Réponse acceptée

Rik
Rik le 12 Nov 2019
Modifié(e) : Rik le 12 Nov 2019
Although I have the feeling this might be homework, I'm going to give a complete answer anyway. By a happy coincidence, this code happens to reproduce your column order.
N=4;k=2;
v=1:N;
C1=nchoosek(v,k);%find rows that should be 1
C2=repmat((1:size(C1,1))',1,size(C1,2));%find the column indices
out=accumarray([C1(:) C2(:)],ones(numel(C1),1));%fill a zero matrix
Or similarly, as Stephen suggested:
R = nchoosek(1:N,k);
C = ndgrid(1:size(R,1),1:size(R,2));
out = accumarray([R(:),C(:)],1);
  3 commentaires
Rik
Rik le 12 Nov 2019
Thank you, good catch. I've edited it into my answer so it doesn't get hidden in the comments.
Dong Jun Jung
Dong Jun Jung le 13 Nov 2019
Thank you so much

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays 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!

Translated by