compression d'un signal par FFT
bonsoir
voila j'ai fait un programme qui fait la compression d'un signal par FFT mais le problème est que je ne retrouve pas le signal original lorsque je fais la reconstruction.
Code:
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
| clear all
fe=300;
f1=10;
f2=60;
f3=90;
t=0:1/fe:1;
x=2*sin(2*pi*t*f1)+10*sin(2*pi*t*f2)+ 20*sin(2*pi*t*f3);
figure(1); plot(x)
X=fft(x);
z=abs(X);
figure(2) ;plot(z)
seuil=0.5;
Xseuil=seuillage(z,seuil);
w=ifft(Xseuil);
figure(3) ; plot(abs(w));
k=fft(abs(w));
figure(4); plot(abs(k))
------------------------------
%% function Xseuil=seuillage(z,seuil)
%en entree:
%z:les coefficients a seuiller
%seuil: le seuil qu'on veut
%en sortie
%Xseuil: les coefficients seuillés
Xseuil=z;
u=find(abs(z)<seuil);
Xseuil(u)=0; |
Compression d'un signal par FFT
Bonjour
je veux savoir est ce que mon programme est ça marche pour la compression ?
et pour quel valeur de seuillage je vais trouvé une bonne compression ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| clear all
close all
fe=300;
f1=10;
f2=60;
f3=90;
t=0:1/fe:1;
x=2*sin(2*pi*t*f1)+10*sin(2*pi*t*f2)+ 20*sin(2*pi*t*f3);
figure(1); plot(x)
title('sign original')
X=fft(x);
figure(2) ;plot(abs(X))
seuil=50;
Xseuil=seuillage(X,seuil);
w=ifft(Xseuil);
figure(3) ; plot(real(w));
title('sign reconstruit')
error=(x-w);
figure(4) ; plot(error) |