Bonjour , bonsoir

Je recherche de l'aide pour un projet je vous l'explique :

j'ai un son .wav (original) et un son perturbé dont on a ajouté un bruit à une certaine fréquence , je dois pouvoir visualiser la fft du signal perturbé pour pouvoir appliquer un filtre réjecteur de bande dont je connais la fréquence à couper pour à la fin retrouver plus ou moins mon signal d'origine

mon problème est le suivant j'ai beau essayé d'utiliser les fonctions filter fir1 etc mais je n'y parviens pas alors j'utilise la fonction de transfert de l'équation aux différences : y(nT) = ax(nT) + bx[(n-1)T]+ cx[(n-2)T] - dy[(n-1)T] - ey[(n-2)T]
Le soucis c'est que je n'obtiens pas vraiment le même signal que l'original ms plus celui du perturbé ...

Voici mon code :

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%          Initialisation
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
clear all
close all
Fs = 44000;
Te=1/Fs;
 
Y1 = wavread('original.wav');%Importer le signal original.wav
 
Y2 = wavread('perturb1.wav');%Importer le signal perturb1.wav
 
Y3 = Y2 - Y1 ;
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%               Signal
%           perturb1.wav
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
L=length(Y2);
t=0:L-1;
Ne=length(t);
f=(-Ne/2:Ne/2-1)/Ne*(1/Te);
figure(1)
plot(t,Y1)
title('Signal Original')
xlabel('temps (ms)')
 
figure(2)
plot(t,Y2)
title('Signal perturb1')
xlabel('temps (ms)')
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%               FFT
%           Perturb1.wav
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
fY2=fftshift(fft(Y2));
figure(3)
plot(f,abs(fY2));
title('FFT perturb1.wav');
xlabel('Fréquence(Hz)');
ylabel('Amplitude');
axis([435 445 -1 18*4*10^4])
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%           Filtrage
%         perturb1.wav
%           
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
wo=439*2*pi;%Pulsation de coupure
 
DW=6.2831;%Largeur de la bande
 
 
% Coefficients
 
a=(wo*wo*L*L+4)/(wo*wo*L*L+2*DW*L+4);
 
b=(2*wo*wo*L*L-8)/(wo*wo*L*L+2*DW*L+4);
 
c=a;
 
d=b;
 
e=(wo*wo*L*L-2*DW*L+4)/(wo*wo*L*L+2*DW*L+4);
 
%Equation du filtre réjecteur
 
S=0;
S(1)=a*Y2(1);
S(2)=a*Y2(2)+b*Y2(2-1)-d*S(2-1);
 
h=waitbar(0,'Attendre svp...');
 
for i=3:L
    waitbar(i/L,h)
    S(i)=a*Y2(i)+b*Y2(i-1)+c*Y2(i-2)-d*S(i-1)-e*S(i-2);
 
end;
 
%Signal non perturber
 
figure(4)
plot(t,S)
title('Signal après filtrage')
xlabel('temps (ms)')
Si quelqu'un pouvait m'indiquer la voie à suivre je lui en serais très reconnaissant

Merci d'avance !