如何计算一个向量的汉明权重



我试图在Matlab中计算向量的汉明权重。

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

向量是:

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

然而,这给出了以下结果,这不是我想要的:

Ham_Weight =
   10   10    9    9    9    5    5    7

如果你能帮助我,我将非常感激。

求和的维度不对!

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),它指定要求和的维度。

请注意,这种方法非常慢,从这个问题中可以看出。

编辑

要使它成为一个有效的、有意义的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.

相关内容

  • 没有找到相关文章

最新更新