return getPoint(p[0], p[1]) def cutSignal(signal, meta_data, time_window): time = np.arange(meta_data["number_samples"]) / meta_data["sampling_rate"] fromIndex = int(time_window["from"] / meta_data["duration"] * meta_data["number_samples"]) toIndex = int(time_window["to"] / meta_data["duration"] * meta_data["number_samples"]) return time[fromIndex:toIndex], signal[fromIndex:toIndex] # Lade Konfiguration config = load_configs("configSNR.json")[0] config["source_position"] = [0, 40] # Starte Simulation loaded = simulate(config, config["source_position"], signal_function) signals = loaded.get_measurements() meta = loaded.get_meta_data() micA_pos = convertPoint(config["microphone_positions"][0]) micB_pos = convertPoint(config["microphone_positions"][1]) micC_pos = convertPoint(config["microphone_positions"][2]) micD_pos = convertPoint(config["microphone_positions"][3]) source_pos = convertPoint(config["source_position"]) # Source Signal time = generateTime(meta["sampling_rate"], meta["number_samples"])
return np.arange(0,number_samples)/sampling_rate def getSourceSignal(time): source_signal = np.zeros_like(time) for t in range(0,time.shape[0]): source_signal[t] = signal_function(time[t]) return source_signal def signal_function(x): return math.sin(x * (2 * math.pi * 400.0)) if (x > 0.1 and x < 0.3) else 0 def convertPoint(p): return getPoint(p[0],p[1]) # Lade Konfiguration config = load_configs("config.json")[0] # Starte Simulation loaded = simulate(config, config["source_position"], signal_function) signals = loaded.get_measurements() meta = loaded.get_meta_data() micA_pos = convertPoint(config["microphone_positions"][0]) micB_pos = convertPoint(config["microphone_positions"][1]) source_pos = convertPoint(config["source_position"]) # Source Signal time = generateTime(meta["sampling_rate"],meta["number_samples"]) source_signal = getSourceSignal(time) # Do Power Calculations powerA = getSignalPower_UsingTime_AverageFree(np.asarray(signals[0]))
fromIdx = np.where(thrFil == True)[1][0] toIdx = thrFil.shape[1] - np.where(np.flip(thrFil) == True)[1][0] time_window_signal = {"from": fromIdx, "to": toIdx} sig_cut = cutSignal_sample(signal, meta, time_window_signal) time_window_signal = {"from": 0, "to": 2000} noi_cut = cutSignal_sample(signal, meta, time_window_signal) powerSig = getSignalPower_UsingTime_AverageFree(sig_cut[1]) powerNoi = getSignalPower_UsingTime_AverageFree(noi_cut[1]) snrFac = (powerSig - powerNoi) / (powerNoi) snrDB = 10 * np.log(snrFac) # print(powerSig, powerNoi, snrFac, snrDB) return powerSig, powerNoi, snrFac, snrDB # Lade Konfiguration config = load_configs("configEXP.json")[0] N = 10 distances = [1, 5, 10, 20, 40, 60, 80, 100] angles = [0, 10, 20, 30, 45, 60, 70, 80, 90] f = open('out-dist-0,40m_D.txt', 'w') print( "dis;ang;source_pos;TDOA_Fehler1;TDOA_Fehler1_std;TDOA_Fehler2;TDOA_Fehler2_std;DistanceErrorLIN;DistanceErrorLIN_std;DistanceErrorNOL;DistanceErrorNOL_std;AngleErrorLIN;AngleErrorLIN_std;AngleErrorNOL;AngleErrorNOL_std;" ) print( "dis;ang;source_pos;TDOA_Fehler1;TDOA_Fehler1_std;TDOA_Fehler2;TDOA_Fehler2_std;DistanceErrorLIN;DistanceErrorLIN_std;DistanceErrorNOL;DistanceErrorNOL_std;AngleErrorLIN;AngleErrorLIN_std;AngleErrorNOL;AngleErrorNOL_std;", file=f) mic_dist = 0.4
for p in solutions: if(p[1]>0): result.append(p) if(np.linalg.norm(result[0])>np.linalg.norm(result[1])): return result[0] else: return result[1] def plausibleFilter_AMP(solutions): if(solutions[0][1]<0): return solutions[1] else: return solutions[0] # Lade Konfiguration config = load_configs("configAMP.json")[0] config["source_position"] = [10, 20] # Starte Simulation loaded = simulate(config, config["source_position"], signal_function) signals = loaded.get_measurements() meta = loaded.get_meta_data() micA_pos = convertPoint(config["microphone_positions"][0]) micB_pos = convertPoint(config["microphone_positions"][1]) micC_pos = convertPoint(config["microphone_positions"][2]) micD_pos = convertPoint(config["microphone_positions"][3]) source_pos = convertPoint(config["source_position"]) # Source Signal