Same Output - Hamming distance

27 Views Asked by At

No matter what i'm trying to change, my output is always "Sensor defect detected". At first i thought it is an indetation-problem, but still it doesn't work.

def hamming_dist(signal_1, signal_2):
    result = []
    
    if len(signal_1['times']) != len(signal_1['data']):
        return "Empty signal on at least one of the sensors"

    if len(signal_1['data']) != len(signal_2): 
        return "Empty signal on at least one of the sensors"

    if len(signal_1) == 0 or len(signal_2) == 0:
        return "Empty signal on at least one of the sensors"


    if len(signal_1 ['data']) == len(signal_2):

        for i in range(len(signal_1 ['data'])):

            str1 = signal_1['data']
            str2 = signal_2[i]
            count_index = 0
            ham_dist = 0

            if len(str1) != len(str2):
                return "Sensor defect detected"

            while count_index < len(str1):
                if str1[count_index] != str2[count_index]:
                    ham_dist += 1
                count_index += 1
            result.append((str1, str2, ham_dist))
            i += 1

        return result
  

signal_sensor_1 = {"times": [0, 1, 2, 3, 4, 5],
                   "data": ["00101110", "11001011", "11110000", "01000011", "11001101", "00011011"]}
signal_sensor_2 = ("00101110", "11001001", "11110011", "01111011", "11001101", "00011011")
print(hamming_dist(signal_sensor_1, signal_sensor_2))
1

There are 1 best solutions below

0
Pallie On
            str1 = signal_1['data']
            str2 = signal_2[i]

One string value is an element from signal_sensor_2, e.g. in iteration 1 it is 00101110 for str2. str1 is always entry data in your sensor_1 dictionary, e.g. always ["00101110", "11001011", "11110000", "01000011", "11001101", "00011011"].

You want to take element i from signal_1['data'] by using signal_1['data'][i]