signalDF = butterWorthFilter(signalD, meta_data["sampling_rate"], 2000) TDOA_CSOM1, t, csom = tdoa_csom(signalAF, signalBF, fs=meta_data["sampling_rate"], window=200) TDOA_CSOM2, t, csom = tdoa_csom(signalCF, signalDF, fs=meta_data["sampling_rate"], window=200) TDOA_real1 = getRealTDOA(source_pos, micA, micB) TDOA_real2 = getRealTDOA(source_pos, micC, micD) # Get Real Data angleReal = 90 - angle_degree( getAngle_angle1(getPoint(0, 0), source_pos)) distanceReal = distance(source_pos, getPoint(0, 0)) # Calculate True K 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):
window=2000) TDOA_real1 = getRealTDOA(source_pos, micA, micB) TDOA_real2 = getRealTDOA(source_pos, micC, micD) # SSL - TDOA_LIN estimationLIN = SSL_TDOA_LIN(TDOA_CSOM1, TDOA_CSOM2, micA, micB, micC, micD) # SSL - TDOA_NOL estimationNOL = SSL_TDOA_NOL(TDOA_CSOM1, TDOA_CSOM2, micA, micB, micC, micD, estimationLIN) # Distance distanceReal = distance(source_pos, getPoint(0, 0)) angleReal = 90 - angle_degree( getAngle_angle1(getPoint(0, 0), source_pos)) distanceLIN = distance(source_pos, estimationLIN) distanceNOL = distance(source_pos, estimationNOL) angleLIN = 90 - angle_degree( getAngle_angle1(getPoint(0, 0), estimationLIN)) angleNOL = 90 - angle_degree( getAngle_angle1(getPoint(0, 0), estimationNOL)) # print("angles ° ",angleReal,angleLIN,angleNOL) # print("distances m ",distanceReal,distanceLIN, distanceNOL) TDOA_error1 = np.sqrt( (TDOA_real1 - TDOA_CSOM1) * (TDOA_real1 - TDOA_CSOM1)) TDOA_error2 = np.sqrt( (TDOA_real2 - TDOA_CSOM2) * (TDOA_real2 - TDOA_CSOM2))
for j in range(0,7): if(i!=j): rI = estim_K/np.sqrt(getSignalPower_UsingTime_AverageFree(np.asarray(signals[i]))) rJ = estim_K/np.sqrt(getSignalPower_UsingTime_AverageFree(np.asarray(signals[j]))) solutions = getIntersectionPointsCircle(convertPoint(config["microphone_positions"][i]), rI, convertPoint(config["microphone_positions"][j]), rJ) if(len(solutions)!=0): estimPoint = plausibleFilter_AMP(solutions) estimPoints.append(estimPoint) # Ergebnisse auswerten array_center = getPoint(0,0) distList = list() anglList = list() for p in estimPoints: distList.append(distance(array_center,convertPoint(p))) anglList.append(getAngle_angle1(array_center, convertPoint(p))) d = np.average(distList) a = np.average(anglList) estimPoint = getPoint(d*np.cos(a),d*np.sin(a)) # Plot Results fig = plt.figure(figsize=(15,5)) plt.subplot(1,3,1) plt.plot(K_list, label="sorted K list") plt.plot(np.arange(len(K_list)-len(K_list_filt),len(K_list)),K_list_filt, label="filtered K list") plt.hlines(estim_K, 0, 80, label="estimated K", colors="red") plt.hlines(real_K, 0, 80, label="real K", colors="green") plt.vlines(FILTER_LOW,0,1,label="filter_low") plt.vlines(FILTER_HIGH,0,1,label="filter_high") plt.legend(loc=4)
micD = micList[idxD-1] signalA = data[idxA] signalB = data[idxB] signalC = data[idxC] signalD = data[idxD] signalAF = butterWorthFilter(signalA, meta_data["sampling_rate"], 2000) signalBF = butterWorthFilter(signalB, meta_data["sampling_rate"], 2000) signalCF = butterWorthFilter(signalC, meta_data["sampling_rate"], 2000) signalDF = butterWorthFilter(signalD, meta_data["sampling_rate"], 2000) TDOA_CSOM1, t, csom = tdoa_csom(signalAF, signalBF, fs=meta_data["sampling_rate"], window=300) TDOA_CSOM2, t, csom = tdoa_csom(signalCF, signalDF, fs=meta_data["sampling_rate"], window=300) TDOA_real1 = getRealTDOA(source_pos, micA, micB) TDOA_real2 = getRealTDOA(source_pos, micC, micD) # Get Real Data angleReal = 90-angle_degree(getAngle_angle1(getPoint(0,0), source_pos)) distanceReal = distance(source_pos, getPoint(0,0)) # Determine SSL LIN estimationLIN = SSL_TDOA_LIN(TDOA_CSOM1, TDOA_CSOM2, micA, micB, micC, micD) if(estimationLIN=="no"): print(arr, ";", signal, ";", angle, ";", dist, ";", pNoise, ";", pSigna, ";", snr_DB, ";", TDOA_real1, ";", TDOA_real2, ";", TDOA_CSOM1, ";", TDOA_CSOM2, ";", angleReal, ";", "nan", ";", "nan", ";", distanceReal, ";", "nan", ";", "nan") print(arr, ";", signal, ";", angle, ";", dist, ";", pNoise, ";", pSigna, ";", snr_DB, ";", TDOA_real1, ";", TDOA_real2, ";", TDOA_CSOM1, ";", TDOA_CSOM2, ";", angleReal, ";", "nan", ";", "nan", ";", distanceReal, ";", "nan", ";", "nan", file=f) continue; # Determine SSL NOL estimationNOL = SSL_TDOA_NOL(TDOA_CSOM1, TDOA_CSOM2, micA, micB, micC, micD, estimationLIN) # Fehler Auswertung angleLIN = 90-angle_degree(getAngle_angle1(getPoint(0,0), estimationLIN)) angleNOL = 90-angle_degree(getAngle_angle1(getPoint(0,0), estimationNOL))
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)] # Distance distanceReal = distance(source_pos, getPoint(0,0)) angleReal = 90 - angle_degree(getAngle_angle1(getPoint(0,0), source_pos)) # Distance Estimated radiusList = list() for i in range(0,len(micList)): radiusList.append(np.sqrt(K_estim/signalsPower[i])) distanceEstim = np.average(radiusList) print(dis, ";", ang, ";", K_true, ";", K_estim, ";", distanceReal, ";", distanceEstim) print(dis, ";", ang, ";", K_true, ";", K_estim, ";", distanceReal, ";", distanceEstim, file=f) f.close()