def frf_multiple_capter_simu_damaged(inFile=None, fichier_sampl="f_sampl_damaged.txt"): print( "*************************\n Simulation for damaged state \n *************************" ) #simu: a activer seulement si on veut de nouvelles donnees forces = simu.white_noise(SAMPLVALUE, CAPTVALUE) acc, measures, f_sampl = simu.simulation(forces, "F_damaged.txt", "Y_damaged.txt", fichier_sampl, damaged="f_sampl_undamaged.txt") #donnes de la simu forces = parser.get("F_damaged.txt")[:] measures = parser.get("Y_damaged.txt")[:] # res = [] for i in range(CAPTVALUE): res.append( frf.frf(tool.get_lines(forces, i), tool.get_lines(measures, i))) if inFile == None: return res else: parser.writeValues(inFile, res) print("Values written in " + inFile)
def frf_multiple_sensors(inFileRef, inFileInf, inFileSup, inFileDamage, damage=DAMAGED_SENSOR, d=0): #print("*************************\n Simulation \n*************************") measurement, measurement_damaged, f, f_damaged, sampling_freq = simulation( DAMAGED_SENSOR, d) #print("*************************\n reference FRF computation \n*************************") res = [] res_freq = [] #for k in range(MAKEREF): for j in range(CAPTVALUE): tmp = [] freq = [] for i in range(CAPTVALUE): v_frf, f_frf = frf(tool.get_lines(f, j), tool.get_lines(measurement, i), sampling_freq) #[k] with MAKEREF tmp.append(v_frf) freq.append(f_frf) if (j == 0): test_v = list(tmp) else: test_v = add_list2(test_v, tmp) res = test_v res_freq = freq #res += [tmp] #res_freq += [freq] #frf_average, frf_inf, frf_sup = itp.create_ref(res) parser.writeValues(inFileRef, np.transpose(res)) #print("Values written in " + inFileRef) #parser.writeValues(inFileInf,frf_inf) #print("Values written in " + inFileInf) #parser.writeValues(inFileSup,frf_sup) #print("Values written in " + inFileSup) #print("*************************\n damaged FRF computation \n *************************") res = [] for j in range(CAPTVALUE): tmp = [] freq = [] for i in range(CAPTVALUE): v_frf, f_frf = frf(tool.get_lines(f_damaged, j), tool.get_lines(measurement_damaged, i), sampling_freq) #[k] with MAKEREF tmp.append(v_frf) freq.append(f_frf) if (j == 0): test_v = list(tmp) else: test_v = add_list2(test_v, tmp) res = test_v parser.writeValues(inFileDamage, np.transpose(res)) #print("Values written in " + inFileDamage) return np.transpose(res_freq)
def frf_multiple_sensors(inFileRef, inFileInf, inFileSup, inFileDamage, remake=True, damage=DAMAGED_SENSOR): print("*************************\n Simulation \n*************************") measurement, measurement_damaged, f, f_damaged, sampling_freq = simulation( remake, DAMAGED_SENSOR) print( "*************************\n reference FRF computation \n*************************" ) res = [] res_freq = [] #for k in range(MAKEREF): tmp = [] freq = [] for i in range(CAPTVALUE): v_frf, f_frf = frf(tool.get_lines(f, EXCITED_SENSOR), tool.get_lines(measurement, i), sampling_freq) #[k] with MAKEREF tmp.append(v_frf) freq.append(f_frf) res = tmp res_freq = freq #res += [tmp] #res_freq += [freq] #frf_average, frf_inf, frf_sup = itp.create_ref(res) parser.writeValues(inFileRef, np.transpose(res)) #print("Values written in " + inFileRef) #parser.writeValues(inFileInf,frf_inf) #print("Values written in " + inFileInf) #parser.writeValues(inFileSup,frf_sup) #print("Values written in " + inFileSup) print( "*************************\n damaged FRF computation \n *************************" ) res = [] for i in range(CAPTVALUE): v_frf, f_frf = frf(tool.get_lines(f_damaged, EXCITED_SENSOR), tool.get_lines(measurement_damaged, i), sampling_freq) #[k] with MAKEREF res.append(v_frf) parser.writeValues(inFileDamage, np.transpose(res)) #print("Values written in " + inFileDamage) """ for k in range(MAKEREF): tmp = [] for i in range(CAPTVALUE): tmp.append(frf.frf(tool.get_lines(f_damaged[k],i),tool.get_lines(measurement_damaged[k],i))) res += [tmp] frf_average, frf_inf, frf_sup = itp.create_ref(res) parser.writeValues(inFileDamage,frf_average) """ return np.transpose(res_freq)
def experience(): _, _, acc = simulation(0, [[0 for k in range(2 * n)]]) frf_ref, acc = frf_multiple_sensors(1, acc) error_ref = itp.global_error(frf_ref) error_list = [] error_list2 = [] for k in range(MAKEREF): print(k) frf_undamaged, acc = frf_multiple_sensors(1, acc) error_undamaged = itp.global_error(frf_undamaged) error_list += [minus_list(error_undamaged, error_ref)] error_undamaged2 = itp.global_error(minus_list(frf_ref, frf_undamaged)) error_list2 += [error_undamaged2] threshold = [0 for k in range(CAPTVALUE)] threshold_inv = [0 for k in range(CAPTVALUE)] av, std = av_std(error_list) av_inv, std_inv = av_std(error_list2) #threshold2 threshold_gauss = [av[k] + 2 * std[k] for k in range(CAPTVALUE)] threshold_gauss_inv = [ av_inv[k] + 2 * std_inv[k] for k in range(CAPTVALUE) ] for k in range(1, CAPTVALUE - 1): e_list = tool.get_lines(error_list, k) e_list2 = tool.get_lines(error_list2, k) threshold[k] = max(e_list) threshold_inv[k] = max(e_list2) if (0): plt.hist(e_list, bins=10) plt.title("Error repartition for sensor: " + str(k)) plt.legend() plt.show() parser.writeValues3("data/threshold1_noise" + str(NOISE) + ".txt", threshold) parser.writeValues3("data/threshold2_noise" + str(NOISE) + ".txt", threshold_gauss) parser.writeValues3("data/threshold1_inv_noise" + str(NOISE) + ".txt", threshold_inv) parser.writeValues3("data/threshold2_inv_noise" + str(NOISE) + ".txt", threshold_gauss_inv) print("Thresholds writed in data/threshold_noise.txt")
def experience(): _, _, acc = simulation(0, [ [0 for k in range(2*n) ] ]) frf_ref, acc = frf_multiple_sensors(1, acc) error_ref = itp.global_error(frf_ref) error_list = [] for k in range(MAKEREF): print(k) frf_undamaged, acc = frf_multiple_sensors(1, acc) error_undamaged = itp.global_error(frf_undamaged) error_list += [minus_list(error_undamaged, error_ref)] threshold = [ 0 for k in range(CAPTVALUE)] for k in range(1,CAPTVALUE-1): e_list = tool.get_lines(error_list,k) threshold[k] = max(e_list) if (0): plt.hist(e_list, bins = 10) plt.title("Error repartition for sensor: " + str(k)) plt.legend() plt.show() parser.writeValues3("data/threshold1_noise.txt",threshold) print("Threshold writed in data/threshold1_noise.txt")
def printPerFreq(res, time): n = len(res[0]) delta = time / n / 10 #plt.ion() for i in range(n): plt.plot(numpy.absolute(tool.get_lines(res, i))) #plt.pause(delta) #plt.clf() plt.show()
def frf_multiple_sensors(typ,acc): measurement, f, acc = simulation(typ,acc) if (typ != 0): res = [] res_freq = [] for j in range(CAPTVALUE): tmp = [] freq = [] for i in range(CAPTVALUE): v_frf, f_frf = frf(tool.get_lines(f,j),tool.get_lines(measurement,i),sampling_freq) tmp.append(v_frf) freq.append(f_frf) if (j == 0): test_v = list(tmp) else: test_v = add_list2(test_v, tmp) res = test_v res_freq = freq return np.transpose(res), acc
def frf_multiple_capter_file(inFile=None): #donnes du prof forces = parser.get("donnees/F.txt")[:] measures = parser.get("donnees/Y.txt")[:] # res = [] for i in range(CAPTVALUE): res.append(frf.frf(forces, tool.get_lines(measures, i))) if inFile == None: return res else: parser.writeValues(inFile, res) print("Values written in " + inFile)