コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: all.py プロジェクト: jrogala/SurMeca
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)
コード例 #4
0
ファイル: threshold_noise.py プロジェクト: jrogala/SurMeca
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")
コード例 #5
0
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")
コード例 #6
0
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()
コード例 #7
0
ファイル: damage_noise.py プロジェクト: jrogala/SurMeca
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
コード例 #8
0
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)