determine combination of elements in matrix
조회 수: 3 (최근 30일)
이전 댓글 표시
I have a matrix, X
x = [1 1 1 1]
and I know if I introduced one zero to x, possible combination 4^1=4, which gives me, y
y = [0 1 1 1;
1 0 1 1;
1 1 0 1;
1 1 1 0;];
if I introduced two zeros to x, what are possible combinations which gives me, z. Is this correct below? Is there a code to determine the combinations?
z = [0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0]
댓글 수: 0
채택된 답변
Adam Danz
2019년 8월 22일
편집: Adam Danz
2019년 8월 22일
You can use combnk() to create the permuted column indices for each row of your matrix and then replace those values by 0.
% Generate some data
z = ones(6,4); % your original matrix
nzeros = 2; % number of zeros to add to each row
Solution:
permIdx = combnk(1:size(z,2), nzeros); %permutation index
linIdx = sub2ind(size(z),repmat(1:size(permIdx),nzeros,1).',sortrows(permIdx));
z(linIdx) = 0;
추가 답변 (1개)
Bruno Luong
2019년 8월 22일
편집: Bruno Luong
2019년 8월 22일
lgt = 4; % number of elements
nz = 2; % number of 0s
j = nchoosek(1:lgt,lgt-nz);
i = repmat((1:size(j,1))',[1 size(j,2)]);
z = accumarray([i(:),j(:)],1)
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!