Esempio n. 1
0
            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)
Esempio n. 4
0
 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))            
Esempio n. 5
0
                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()