K_true = 0 for k in range(0, len(micList)): K_true += signalsPower[k] * distance( micList[k], source_pos) * distance(micList[k], source_pos) K_true /= len(micList) # Calculate K estimation K_estim_exakt = list() K_estim_noise = list() for i in range(0, len(micList)): for j in range(0, len(micList)): if (i != j): a = getRealTDOA(source_pos, micList[i], micList[j]) b = getFakeTDOA(a, 96000) K1_exakt, K2_exakt = estimateK_Pair( signalsPower[i], signalsPower[j], micList[i], micList[j], a * 343.2) K1_noised, K2_noised = estimateK_Pair( signalsPower[i], signalsPower[j], micList[i], micList[j], b * 343.2) K_estim_exakt.append(K1_exakt) K_estim_exakt.append(K2_exakt) K_estim_noise.append(K1_noised) K_estim_noise.append(K2_noised) # Remove NAN K_estim_exakt = [x for x in K_estim_exakt if str(x) != 'nan'] K_estim_noise = [x for x in K_estim_noise if str(x) != 'nan'] K_estim_exakt.sort() K_estim_noise.sort() K_estim = K_estim_noise[int(len(K_estim_noise) * xval)]
delta_t2 = delta_n2*meta["sampling_spacing"] delta_t3 = delta_n3*meta["sampling_spacing"] delta_t4 = delta_n4*meta["sampling_spacing"] delta_t5 = delta_n5*meta["sampling_spacing"] delta_t6 = delta_n6*meta["sampling_spacing"] delta_s1 = delta_t1*343.2 delta_s2 = delta_t2*343.2 delta_s3 = delta_t3*343.2 delta_s4 = delta_t4*343.2 delta_s5 = delta_t5*343.2 delta_s6 = delta_t6*343.2 # AMP Verfahren K_list = list() R_listA = list() K1, K2 = estimateK_Pair(powerA, powerB, micA_pos, micB_pos, delta_s1) K_list.append(K1) K_list.append(K2) R_listA.append(K1/np.sqrt(powerA)) R_listA.append(K2/np.sqrt(powerA)) K1, K2 = estimateK_Pair(powerA, powerC, micA_pos, micC_pos, delta_s2) K_list.append(K1) K_list.append(K2) R_listA.append(K1/np.sqrt(powerA)) R_listA.append(K2/np.sqrt(powerA)) K1, K2 = estimateK_Pair(powerA, powerD, micA_pos, micD_pos, delta_s3) K_list.append(K1) K_list.append(K2) R_listA.append(K1/np.sqrt(powerA)) R_listA.append(K2/np.sqrt(powerA)) K1, K2 = estimateK_Pair(powerB, powerC, micB_pos, micC_pos, delta_s4)
tdoa = basic_tdoa.BasicTDOA(loaded, 0, 0.0, arr) TDOA_mat = tdoa.tdoa_gcc_phat(0.0)[1][0] K_list = list() for i in range(0,7): for j in range(0,7): if(i!=j): delta_n1 = TDOA_mat[j][i] # MIC A and MIC B delta_t1 = delta_n1*meta["sampling_spacing"] delta_s1 = delta_t1*343.2 powerA = getSignalPower_UsingTime_AverageFree(np.asarray(signals[i])) powerB = getSignalPower_UsingTime_AverageFree(np.asarray(signals[j])) micA_pos = convertPoint(config["microphone_positions"][i]) micB_pos = convertPoint(config["microphone_positions"][j]) K1, K2 = estimateK_Pair(powerA, powerB, micA_pos, micB_pos, delta_s1) K_list.append(K1) K_list.append(K2) # AMP Verfahren FILTER_LOW = int(len(K_list)*0.4) FILTER_HIGH = len(K_list)-1 K_list = [x for x in K_list if str(x) != 'nan'] K_list.sort() K_list_filt = [x for x in K_list if x > 0.05] #K_list[FILTER_LOW-1:FILTER_HIGH] estim_K = np.median(K_list_filt) import matplotlib.pyplot as plt #plt.plot(K_list) #
z = np.asarray(s) power = getSignalPower_UsingTime_AverageFree(np.asarray(s)) powers.append(power) # print("microphone ",power,"W") #print("Source Power ",getSignalPower_UsingTime_AverageFree(source_signal),"W") # Calculate TDOA arr = array_parameters.ArrayParameters(config["microphone_positions"]) tdoa = basic_tdoa.BasicTDOA(loaded, 0, 0.0, arr) # Do Amplitude Verfahren powerA = powers[0] powerB = powers[1] micA_pos = convertPoint(config["microphone_positions"][0]) micB_pos = convertPoint(config["microphone_positions"][1]) dTDOA = tdoa.tdoa_gcc_phat(0.0)[1][0][1][0] dSDOA = dTDOA * meta["sampling_spacing"] * 343.2 K1, K2 = estimateK_Pair(powerA, powerB, micA_pos, micB_pos, dSDOA) rA_1 = K1 / np.sqrt(powerA) rA_2 = K2 / np.sqrt(powerA) rB_1 = K1 / np.sqrt(powerB) rB_2 = K2 / np.sqrt(powerB) solutions = getIntersectionPointsCircle(micA_pos, rA_2, micB_pos, rB_2) estimPos = getPlausibleOne(solutions[0], solutions[1]) sourcePos = convertPoint(config["source_position"]) print(i, config["source_position"], estimPos, " ", sourcePos, " > ", distance(estimPos, sourcePos))