如何计算向量的汉明权重?
How to calculate the Hamming weight for a vector?
我正在尝试在 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)
的第二个输入参数,指定要求和的维度。
请注意,这种方法非常慢,正如您从 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.
我正在尝试在 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)
的第二个输入参数,指定要求和的维度。
请注意,这种方法非常慢,正如您从 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.