Bed of Nails from vectors - inverse of find()?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello,
I would like to do the following:
X = zeros(N,M); % Say N = 50, M = 100
Then have N sets of indices, one for each row of X:
a(1,:) = [ 1 5 10 12 19 32 56 ...]; % These may vary substantially
a(2,:) = [ 1 7 14 19 29 45 76 ...];
...
These are then indices that will indicate where there should be a "1" in each row of X.
Is there a function that will take the indices and then put a "1" in an array? This is kind of like the inverse of find().
Thanks!
Doug Anderson
댓글 수: 2
Jos (10584)
2018년 2월 27일
As your variable a is a N-by-K matrix, this assumes that all rows of X will hold K ones. Is that so?
채택된 답변
Jos (10584)
2018년 2월 27일
% input
N = 5 ; M = 4 ;
a = [1 3 ; 2 4 ; 1 4 ; 1 2 ; 3 4]
% engine in one line
XX = full(sparse(repmat(1:N, size(a,2), 1)', a, 1,N,M))
댓글 수: 2
Jos (10584)
2018년 2월 28일
This might not be the most efficient way though.
See the documentation of sparse for more details.
추가 답변 (2개)
Jos (10584)
2018년 2월 27일
N = 5 ; M = 4 ;
a = [1 3 ; 2 4 ; 1 4 ; 1 2 ; 3 4]
X = zeros(N,M)
X(sub2ind([N M], repmat(1:N, size(a,2), 1)', a)) = 1
댓글 수: 0
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!