2016-12-01 3 views
0

Je souhaite calculer la distance de Hamming entre des vecteurs de très grande dimension. Un point de données est un vecteur appelé en tant que caractéristique. En supposant, chaque composant f_i en tant qu'entier, il est représenté sous sa forme binaire ayant par exemple j bits. Il existe n = 900 composants de fonction pour chaque point de données. La formulation du problème estMatlab: Comment implémenter une version vectorisée pour le calcul de la distance L1

Problem

La formule pour la distance de Hamming entre 2 différents vecteurs est donnée dans l'image ci-dessous où j = number of bits

formula

Ex laisser n = 10 composants de fonction,

f = [3,4,1,4,5,6,6,7,1,14]; 
g = [1,3,5,6,7,8,11,3,10,2]; 

Chaque composant/élément du tableau est représenté par sa représentation binaire de 16 bits en utilisant dec2bin(f_i,l)

J'ai essayé d'utiliser dist = sum((f-g).^2,2)* 1/2^l où l = 16 bits mais cela n'a pas de sens car il y a 2 sommations dans la formule.

+0

Votre 'f' a 11 éléments,' g' a 10, et les deux devraient être à deux dimensions. Peux-tu expliquer? –

+0

Il y avait une faute de frappe ..... les deux sont de la même taille. Désolé pour l'erreur –

+0

Dans mon application, ils sont en deux dimensions et non en valeur entière. Je voulais savoir comment calculer la distance afin que je puisse l'étendre plus tard à mon application complète –

Répondre

1

Si je comprends bien, ce que vous voulez est

sum(bitxor(f,g))/2^l 

l=16