Bonjour,
Je suis un novice de MatLab et j'aimerai avoir un coup de pouce concernant un programme de traitement de signal que j'essaie de réaliser.
En fait, je dois implémenter un programme qui permet de récupérer des valeurs de pressions échantillonnées à 1kHz à partir d'un fichier .txt et les filtrer pour éliminer le bruit qui vient se superposer sur le signal d'origine. Ensuite je dois les ploter en fonction du temps et de la fréquence.
Pour l'importation du fichier tout va bien j'ai réussi à importer toutes les valeurs et à les indexer
J'ai aussi créé une base temporelle de 0.001*30099, avec N=30099 le nombre d'échantillons de mon signal. et une base fréquentielle. Après je fais une fft de mon signal et c'est à partir de là ou commence mon problème car une fois je fais la fft je me retrouve avec des pics répétés et je vois pas comment je pourrais procéder pour éliminer ceux qui représentent les harmoniques.
Je vous remercie 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
43
44
45
46
47
48
49 Pression=smooth(Rampe(:,3)); Fs=1000; %Fréquence de sampling N=30099; %Nombre d'échantillons ind=0.001; %Pas temporel de 0.001s t(:,1)=0:(1/Fs):(N-1)/Fs; %Base temporelle f(:,1)=(0:N-1)*Fs/N; %Changement de la base fréquentielle X=fft(Pression,30099); %Serie de Fourier discrete ty=abs(X); %Changement des indices temporelles - incrémentation de 0.001 à chaque pas for i=1:1:N Rampe(i,1)=ind; %Introduction du Pas temporel ind=ind+0.001; %Incrémentation if(i==N) %Sortir de la boucle lorsqu'on atteint le pas temporel maximal break; end; end; figure(1) plot(t,Pression); title('P2 - Temporelle'); figure(2) semilogx(f(1:length(f)/2),ty(1:length(f)/2)); title('FFT de P2 sans filtrage - Frequentielle'); %Elimination du bruit et des harmoniques for i=1:1:30099 if(ty(i)<6.765e5) ty(i)=0; end; end; %Recomposition du signal temporel à partir du spectre du sgnal Ry=ifft(ty);
Cdlt.
Partager