Bonjour,
Je suis doctorant en aérodynamique et je cherche à exploiter des données obtenus en soufflerie. J'essaie d'étudier le taux de turbulence que l'on trouve étonnant. Je possède un fichier avec la tension d'une sonde (250 000 échantillons à 25 kHz, avec un filtre passe-bas pour éviter l'aliasing à 11.3 kHz), cette tension peut être convertie en vitesse avec une simple loi, j'ai donc de manière équivalente 250 000 échantillons de vitesse.
Je cherche à étudier l'influence des très basses fréquences sur la turbulence que l'on définit ainsi: Tu = Ecart-Type(U) / U_moyen, U étant la vitesse. Pour faire ça j'essaie de faire la chose suivante:
-Effectuer la PSD de la partie fluctuante de la vitesse (pour les 250 000 échantillons, on appelle cette composante u[i] = U[i] - U_moyen)
-Intégrer cette PSD sur toute la gamme de fréquence sauf la plus basse (environ 6Hz seront coupés), pour retomber sur l'écart-type(U) sans les basses fréquences (sauf erreur, intégrer la PSD de u[i] = U[i] - U_moyen doit me faire retomber sur la valeur de l'écart-type)
Dans une premier temps, j'essaie d'intégrer l'écart-type en prenant toute la gamme de fréquence pour vérifier qu'on obtient bien la même valeur que par la commande np.std(U), mais ceci ne marche pas. Sauriez-vous d'où vient l'erreur? Je n'arrive pas à savoir si elle vient d'un souci de raisonnement de ma part ou simplement d'implémentation.
Je mets ci-dessous ma boucle principale simplifiée (j'ai 36 points avec 250 000 échantillons de vitesse)
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 for i in range (nbdepoints): #Initialisation des variables temporaires tension_FC=[] vitesse_FC=[] #Récupération de la position et des valeurs de tension position=np.genfromtxt(filchaud,dtype=str,usecols=1, unpack=True, skip_header=3, max_rows=1) tension_FC =np.genfromtxt(filchaud,dtype=str,usecols=(1), unpack=True, skip_header=2,max_rows=nb_echantillons) position=str(position) #Conversion virgules en point et tension en vitesses position=convertisseur1(position) tension_FC=convertisseur(tension_FC) vitesse_FC=convertisseurvitesse(tension_FC) for j in range(nb_echantillons): U_inst[i][j]=vitesse_FC[j] #alimentation des données à garder U[i]=np.mean(vitesse_FC) u_rms[i]=np.std(vitesse_FC) position_longi[i]=position+position_depart Tu[i]=u_rms[i]/U[i] if i==36: ######## c'est une version simplifiée où je n'étude que le dernier point pour aller plus vite f1,PSD1=signal.welch(vitesse_FC,frequence_acqui, nperseg=4096) #On calcule u' adimensionné par U ######## vitesse fluctuante appelée u ci-dessus u_prime_ad=[] for j in range(len(vitesse_FC)): u_prime_ad.append((vitesse_FC[j] - U[i])) f2,PSD2=signal.welch(u_prime_ad,frequence_acqui, nperseg=4096) #Intégraton par la méthode des trapèzes a=np.sqrt(np.trapz(PSD2,f2)) #Sur toutes les fréquences ##### Logiquement je pensais obtenir ici la même valeur que par np.stp(Vitesse) a1=np.sqrt(np.trapz(PSD2[1:],f2[1:])) #On enlève la première bande de fréquences a2=np.sqrt(np.trapz(PSD2[2:],f2[2:])) #On enlève les deux premières
Partager