0
또는 더 일반적으로 1에서 n까지의 정수 목록을 0과 1의 n 차원 벡터로?Octave/Matlab에서 [1,2,4,8]을 [1 1 0 1 0 0 0 1]로 바꾸려면 어떻게해야합니까?
또는 더 일반적으로 1에서 n까지의 정수 목록을 0과 1의 n 차원 벡터로?Octave/Matlab에서 [1,2,4,8]을 [1 1 0 1 0 0 0 1]로 바꾸려면 어떻게해야합니까?
A = [ 1, 2, 4, 8];
B = false(1,A(end));
B(A) = true;
반환 :
B =
1 1 0 1 0 0 0 1
및 옵션 : B = double(B)
당신이 복식으로 필요합니다.
나 :
그러나B = zeros(1,A(end));
B(A) = 1;
.
왜'numel (A)'로'B'를 초기화합니까? 주어진 예제에서, 요청 된 것이 아닌 1x4 벡터를 초기화 할 것입니다. 'B (A) = true' 또는'B (A) = 1'만으로 충분합니다. – carandraug
@ carandraug :'numel (A)'은 말도 안되는 소리입니다. 하지만 다른 모든 값이'0' /'false'인지 확인하기 위해 초기화를 유지할 것입니다. – thewaywewalk
다른 모든 값은 기본적으로 false 또는 0입니다. 걱정할 필요가 없습니다. 여전히'B'를 초기화하고 싶다면 (다른 인덱스에 할당하는 값은 ** 초기화입니다),'max (A (:))'를 사용하십시오. 잘못된 위치로 초기화하는 것은 할당이 크기 조정을 강제 할 것이기 때문에 사실 더 나빠집니다. – carandraug