2016-08-08 2 views
0

Matlab에서 벡터의 해밍 웨이트를 계산하려고합니다.벡터의 해밍 웨이트를 계산하는 방법은 무엇입니까?

function Hamming_weight (vet_dec) 
Ham_Weight = sum(dec2bin(vet_dec) == '1')  
endfunction 

벡터는 : 당신이 나를 도울 수 있다면

Ham_Weight = 

    10 10 9 9 9 5 5 7 

나는 매우 감사하게 될 것이다 : 그러나

Hamming_weight ([208 15 217 252 128 35 50 252 209 120 97 140 235 220 32 251]) 

, 이것은 내가 원하는하지 않은, 다음과 같은 결과를 제공 부디.

+0

이것은 옥타브이지만 MATLAB이 아닙니다 –

+0

옥타브는 matlab과 유사합니다. –

+0

비슷하지만 동일하지는 않습니다. 그래서 당신은 항상 옥타브 또는 matlab을 사용하고 있는지 또는 코드가 두 시스템에서 실행되어야 하는지를 말해야합니다. – Andy

답변

1

잘못된 치수를 합산 한 것입니다!

sum(dec2bin(vet_dec) == '1',2).' 
ans = 
    3 4 5 6 1 3 3 6 4 4 3 3 6 5 1 7 

dec2bin(vet_dec)

이 같은 매트릭스를 생성합니다 : 당신이 볼 수 있듯이

11010000 
00001111 
11011001 
11111100 
10000000 
00100011 
00110010 
11111100 
11010001 
01111000 
01100001 
10001100 
11101011 
11011100 
00100000 
11111011 

, 당신은 각 행이 아닌 각 컬럼의 합에 관심. 합계 할 치수를 지정하는 sum(x, 2)의 두 번째 입력 인수를 사용하십시오.

this question에서 볼 수 있듯이이 방법은 매우 느립니다. 이를 위해

편집이 유효하고 의미있는 MATLAB 기능으로, 당신은 당신의 함수 정의를 조금 변경해야합니다.

function ham_weight = hamming_weight(vector)  % Return the variable ham_weight 

ham_weight = sum(dec2bin(vector) == '1', 2).'; % Don't transpose if 
               % you want a column vector 
end            % endfunction is not a MATLAB command. 
관련 문제