IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Déconvolution via FFT, IFFT


Sujet :

Signal

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Par défaut Déconvolution via FFT, IFFT
    Bonjour tout le monde est plus spécialement au habitué du forum

    Voila j'ai mon programme suivant qui a pour but de bruité un signal type sinus via une convolution, et d'utilisé une déconvolution pour retrouver mon signal de basse or je le retrouve bien mais avec un déphasage de pi/2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x= -pi:0.01:pi     % Generate Sinusoidal signal
    s=sin(x);
    n=randn(1,629);   % Generate Guassion Noise
    z= fft(b).*fft(n)
    y=ifft(z)
    Y a t'il un moyen de retrouver notre signal non décalé ?

    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu parles de convolution/déconvolution, mais dans ton code, je ne vois qu'une convolution...
    De plus que représente b dans z= fft(b).*fft(n)? Est-ce s?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Bonjour,

    Tu parles de convolution/déconvolution, mais dans ton code, je ne vois qu'une convolution...
    De plus que représente b dans z= fft(b).*fft(n)? Est-ce s?
    En effet c'est bien
    La convolution de 2 signaux est la multiplication des 2 transformées de fourier
    Donc la déconvolution est la Transformée inverse de fourier du produit des 2 signaux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    z= fft(s).fft(n) % convolution
    y=ifft(z)	% déconvolution
    D'ou mon problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    x= -pi:0.01:pi % Generate Sinusoidal signal
    s=sin(x);
    n=randn(1,length(s));
    z= fft(s).*fft(n) % convolution
    y=ifft(z)	% déconvolution
    subplot(121)
    plot(s)
    title ('Signal réel S')
    subplot(122)
    plot(y)
    title ('signal déconvolué Y')

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jigsa Voir le message
    La convolution de 2 signaux est la multiplication des 2 transformées de fourier
    Donc la déconvolution est la Transformée inverse de fourier du produit des 2 signaux...
    Non ceci n'est que l'opération de convolution, avec l'ifft, tu ne fais que repasser dans le domaine temporel.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Par défaut
    En effet je dois donc taper ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    x= -pi:0.01:pi % Generate Sinusoidal signal
    s=sin(x);
    n=randn(1,length(s));
    z= fft(s).*fft(n) % convolution
    Z=fft(z)
    y=fft(Z)./fft(n)    % déconvolution
    y=ifft(z)	        % déconvolution
    subplot(121)
    plot(s)
    title ('Signal réel S')
    subplot(122)
    plot(y)
    title ('signal déconvolué Y')
    Mais j'ai toujours un problème récurant, qui est un gain (environ 18) et un déphasage changeant...
    Je ne vois vraiment pas comment pourquoi

  6. #6
    Invité
    Invité(e)
    Par défaut
    Des petites erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    x= -pi:0.01:pi; % Generate Sinusoidal signal
    s=sin(x);
    n=randn(1,length(s));
    z= fft(s).*fft(n); % convolution
    Z=ifft(z);
    y=fft(Z)./fft(n);    % déconvolution
    y=ifft(y);	        % déconvolution
    subplot(121)
    plot(s)
    title ('Signal réel S')
    subplot(122)
    plot(y)
    title ('signal déconvolué Y')
    Remarque: pense à mettre des ; à la fin de tes lignes, toutes les valeurs ne sont alors plus affichées dans ta ligne de commande

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 10
    Par défaut
    Merci bcp,
    J'avais fait une fft de trop

    ps: Il se peut que je vous sollicite de nouveau dans un avenir proche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déconvolution via FFT, IFFT [2]
    Par jeanlabab dans le forum Signal
    Réponses: 12
    Dernier message: 02/09/2011, 10h15
  2. fft-ifft- supression de fréquence
    Par tesca dans le forum Signal
    Réponses: 7
    Dernier message: 23/06/2010, 16h22
  3. FFT/IFFT and conjugate OF FFT design
    Par ingm83 dans le forum Simulink
    Réponses: 0
    Dernier message: 27/05/2010, 00h11
  4. Filtrage par fft-ifft
    Par zugeur dans le forum Signal
    Réponses: 15
    Dernier message: 03/04/2009, 17h17
  5. Calcul de fréquence via FFT
    Par jericho dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/02/2008, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo