Bon... on va arrêter le carnage ici parce que c'est édifiant...
1)
Un filtre passe-bas est un filtre qui laisse passer les basses fréquences et qui atténue les hautes fréquences, c'est-à-dire les fréquences supérieures à la fréquence de coupure. (
Wikipédia)
2) Dans la mesure où un bruit est généralement un signal haute fréquence, filtrer un signal bruité en ne gardant que les hautes fréquences revient à garder seulement le bruit... d'une utilité phénoménale!!!
3) La
fft Matlab est une transformée de Fourier discrète "standard" comme beaucoup d'autres (librairie fftw Fortran, etc...), par conséquent ça donne un spectre qui est shifté. Pour avoir correctement le spectre il faut utiliser la fonction
fftshift de
Matlab (ou faire à la main... mais bon... vu qu'il y a une fonction, autant en profiter...)
4)
falla, ce n'est qu'un avis personnel mais je pense qu'un bruit blanc (
rand) où un bruit gaussien (
randn) modéliseraient mieux le bruit que l'on a sur un signal (si c'est bien ça que tu voulais faire)...
Fs = 819050;
L = 16384;
T = L/(L-1)*1/Fs;
t = (0:L-1)*T;
f = linspace(-Fs/2,Fs/2,L);
fc = 100; %fréquence de coupure
freqplot = 1050; % fréquence max pour la courbe des harmoniques
Nmaxplot = find(f>=freqplot,1);
x = 55.2*sin(2*pi*50*t-2*pi*6/360)+...
42.78*sin(2*3*pi*50*t+2*pi*158/360)+23.69*sin(2*5*pi*50*t-2*pi*41/360)+...
7.82*sin(2*7*pi*50*t+2*pi*105/360)+3.68*sin(2*9*pi*50*t+ 2*pi*175/360)+...
3.91*sin(2*11*pi*50*t-2*pi*58/360)+1.84*sin(2*13*pi*50*t+ 2*pi*69/360)+...
1.38*sin(2*15*pi*50*t+2*pi*146/360)+1.15*sin(2*17*pi*50*t-2*pi*91/360)+...
0.69*sin(2*19*pi*50*t)+0.92*sin(2*21*pi*50*t+2*pi*104/360);
figure(1);
plot(t,x);
title('Signal Corrupted with Zero-Mean Random Noise');
xlabel('temps (s)');
y=1/Fs*fft(x);
y=fftshift(y);
figure(2);
%Plot single-sided amplitude spectrum
plot(f(L/2:Nmaxplot),abs(y(L/2:Nmaxplot)));
title('Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|') ;
%filtrage des harmoniques
Yfilter = linspace(0,Fs,L);
Yfilter = (abs(Yfilter-Fs/2)<=fc);
Yfilter = Yfilter.*y;
Yfilter = fftshift(Yfilter);
sig_filter=Fs*ifft(Yfilter);
figure(3);
plot(t,real(sig_filter))
title('Filtered signal');
xlabel('Temps (s)');
Dis-moi s'il y a encore des bugs...
Ciao
merci tu me redonne du courage.