Create a logical matrix from numerical vector
조회 수: 1 (최근 30일)
이전 댓글 표시
Maybe the title sounds vague, but I'll try to explain. I have the following vector of size samples-by-1 that contains the numerical values between 0 and 9 (10 values):
V = [3;5;1;2;6;9;7;8;4;0]
Now I want to create a 'logical' matrix from this. So like this:
0 1 2 3 4 5 6 7 8 9
M = [0 0 0 1 0 0 0 0 0 0;
0 0 0 0 0 1 0 0 0 0;
0 1 0 0 0 0 0 0 0 0;
0 0 1 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 0 0 0;
0 0 0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 1 0 0;
0 0 0 0 0 0 0 0 1 0;
0 0 0 0 1 0 0 0 0 0;
1 0 0 0 0 0 0 0 0 0]
What's the easiest way to achieve this?
댓글 수: 0
채택된 답변
Walter Roberson
2017년 12월 18일
full( ind2vec(V+1).' )
or,
accumarray((1:length(V)).', V+1)
or
maxV = max(V);
LV = length(V);
M = zeros(LV, maxV+1);
M(V * LV + (1:LV).') = 1;
or
maxV = max(V);
LV = length(V);
M = zeros(LV, maxV+1);
M( sub2ind(size(M), (1:LV).', V+1) ) = 1;
댓글 수: 3
Walter Roberson
2017년 12월 18일
full( ind2vec(V.'+1).' )
or
accumarray([(1:length(V)).', V+1], 1)
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!