def calculateSNR(arr, sig, dis, angl, time_windowNoise, time_windowSignal): # Lade Daten data, meta_data = load_measurement(arr, sig, angl, dis) pNoise = list() pSigna = list() snr_FC = list() snr_DB = list() for channel in [1, 2, 3, 4, 5, 6, 7, 8]: # Für jedes Mikrofon die Signalleistungen Bestimmen signal = data[channel] # Schneide Aufnahmen time2, signal2 = cutSignal(signal, meta_data, time_windowNoise) time3, signal3 = cutSignal(signal, meta_data, time_windowSignal) pNoise.append(getSignalPower_UsingTime_AverageFree(signal2)) pSigna.append( getSignalPower_UsingTime_AverageFree(signal3) - getSignalPower_UsingTime_AverageFree(signal2)) snr_FC.append((getSignalPower_UsingTime_AverageFree(signal3) - getSignalPower_UsingTime_AverageFree(signal2)) / (getSignalPower_UsingTime_AverageFree(signal2))) snr_DB.append(10 * np.log( (getSignalPower_UsingTime_AverageFree(signal3) - getSignalPower_UsingTime_AverageFree(signal2)) / (getSignalPower_UsingTime_AverageFree(signal2)))) return pNoise, pSigna, snr_FC, snr_DB
def calculateSNR(data, meta_data, time_windowNoise, time_windowSignal): # Lade Daten pNoise = list() pSigna = list() snr_FC = list() snr_DB = list() K_values = [ 1.0000000, 1.12685472, 1.06518856, 1.47356999, 1.19323192, 1.54429486, 1.38300818, 1.21535447 ] for channel in [1, 2, 3, 4, 5, 6, 7, 8]: # Für jedes Mikrofon die Signalleistungen Bestimmen signal = data[channel] # Schneide Aufnahmen time2, signal2 = cutSignal(signal, meta_data, time_windowNoise) time3, signal3 = cutSignal(signal, meta_data, time_windowSignal) pNoise.append(K_values[channel - 1] * getSignalPower_UsingTime_AverageFree(signal2)) pSigna.append(K_values[channel - 1] * getSignalPower_UsingTime_AverageFree(signal3) - getSignalPower_UsingTime_AverageFree(signal2)) snr_FC.append((getSignalPower_UsingTime_AverageFree(signal3) - getSignalPower_UsingTime_AverageFree(signal2)) / (getSignalPower_UsingTime_AverageFree(signal2))) snr_DB.append(10 * np.log( (getSignalPower_UsingTime_AverageFree(signal3) - getSignalPower_UsingTime_AverageFree(signal2)) / (getSignalPower_UsingTime_AverageFree(signal2)))) return pNoise, pSigna, snr_FC, snr_DB
def getSNR(signal): mx = np.max(signal) thrFil = np.asarray([signal > mx * 0.9]) 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) return powerSig, powerNoi, snrFac, snrDB
micD_pos = convertPoint(config["microphone_positions"][3]) source_pos = convertPoint(config["source_position"]) # Source Signal time = generateTime(meta["sampling_rate"], meta["number_samples"]) source_signal = getSourceSignal(time) time_window_noise = {"from": 0.01, "to": 0.5} time_window_signal = {"from": 0.3, "to": 0.4} signal0 = cutSignal(np.asarray(signals[0]), meta, time_window_signal) signal1 = cutSignal(np.asarray(signals[1]), meta, time_window_signal) signal2 = cutSignal(np.asarray(signals[2]), meta, time_window_signal) signal3 = cutSignal(np.asarray(signals[3]), meta, time_window_signal) # Do Power Calculations powerA = getSignalPower_UsingTime_AverageFree(signal0[1]) powerB = getSignalPower_UsingTime_AverageFree(signal1[1]) powerC = getSignalPower_UsingTime_AverageFree(signal2[1]) powerD = getSignalPower_UsingTime_AverageFree(signal3[1]) powerSrc = getSignalPower_UsingTime_AverageFree(source_signal) print(powerA, "\n", powerB, "\n", powerC, "\n", powerD) import matplotlib.pyplot as plt plt.subplot(5, 1, 1) plt.plot(source_signal) plt.subplot(5, 1, 2) plt.plot(signal0[0], signal0[1]) plt.subplot(5, 1, 3) plt.plot(signal1[0], signal1[1]) plt.subplot(5, 1, 4)
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])) powerB = getSignalPower_UsingTime_AverageFree(np.asarray(signals[1])) powerSrc = getSignalPower_UsingTime_AverageFree(source_signal) # Calculate TDOA arr = array_parameters.ArrayParameters(config["microphone_positions"]) tdoa = basic_tdoa.BasicTDOA(loaded, 0, 0.0, arr) delta_n = tdoa.tdoa_gcc_phat(0.0)[1][0][1][0] delta_t = delta_n*meta["sampling_spacing"] delta_s = delta_t*343.2 # TDOA LINEAR VERFAHREN X_NOL_CURVE, Y_NOL_CURVE = KarstenDOA_calculateCurve_nonlinear(micA_pos, micB_pos, delta_s, res=0.01, rang=10) X_LIN_CURVE, Y_LIN_CURVE = KarstenDOA_calculateCurve_linear(micA_pos, micB_pos, delta_s, res=0.01, rang=10) # Plot Data
# 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"]) source_signal = getSourceSignal(time) # Do Power Calculations powerA = getSignalPower_UsingTime_AverageFree(np.asarray(signals[0])) powerB = getSignalPower_UsingTime_AverageFree(np.asarray(signals[1])) powerC = getSignalPower_UsingTime_AverageFree(np.asarray(signals[2])) powerD = getSignalPower_UsingTime_AverageFree(np.asarray(signals[3])) powerSrc = getSignalPower_UsingTime_AverageFree(source_signal) # Calculate TDOA arr = array_parameters.ArrayParameters(config["microphone_positions"]) 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):
# Starte Simulation loaded = simulate(config) signals = loaded.get_measurements() meta = loaded.get_meta_data() # Source Signal time = generateTime(meta["sampling_rate"], meta["number_samples"]) source_signal = np.zeros_like(time) for t in range(0, time.shape[0]): source_signal[t] = signal_function(time[t]) # Do Power Calculations powers = list() for s in signals: 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
# Schneide Zeitfenster auf relevante Bereiche time_window_noise = {"from": 0.01, "to": 0.05} time_window_signal = {"from": 0.3, "to": 0.4} signalsCutNoise = list() signalsCutSignal = list() for sig in signals: signalsCutNoise.append(cutSignal(np.asarray(sig), meta, time_window_noise)) signalsCutSignal.append( cutSignal(np.asarray(sig), meta, time_window_signal)) # Berechne Signalleistungen powerNoise = list() powerSignal = list() for sig in signalsCutNoise: powerNoise.append(getSignalPower_UsingTime_AverageFree(sig[1])) counter = 0 for sig in signalsCutSignal: powerSignal.append( getSignalPower_UsingTime_AverageFree(sig[1]) - powerNoise[counter]) counter += 1 # Plot Data import matplotlib.pyplot as plt plt.figure(figsize=(20, 10)) # Zeichne Geometrie plt.subplot(1, 2, 2) plt.xlim(-10, 10) plt.ylim(-1, 19)
# Starte Simulation loaded = simulate(config) signals = loaded.get_measurements() meta = loaded.get_meta_data() # Source Signal time = generateTime(meta["sampling_rate"], meta["number_samples"]) source_signal = np.zeros_like(time) for t in range(0, time.shape[0]): source_signal[t] = signal_function(time[t]) # Do Power Calculations powers = list() for s in signals: 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]