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

MATLAB Discussion :

Tracer la transformation de Fourier d’une fonction donnée


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut Tracer la transformation de Fourier d’une fonction donnée
    Bonjour,
    Je suis débutant en Matlab, j’ai fait un tours sur ce superbe forum mais je n’ai pas trouvé la réponse à ma question : la voila,
    On se donne la fonction suivante
    f(x)=0 si x<-1 et x>1
    f(x)=1 sinon
    Ma première question est : comment tracer la courbe de cette fonction f sur [-5..5] sous matlab
    je veux aussi tracer la courbe de la transformation de Fourier de f sur l’intervalle [-10,10].
    Merci bien davantage pour vos remarques et suggestions. S’il y en a des lien sur le net parlant de ça je vous serais reconnaissant de me les donner.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par imen1 Voir le message
    Ma première question est : comment tracer la courbe de cette fonction f sur [-5..5] sous matlab
    Une boucle FOR-END, une condition IF-ELSE-END et la fonction PLOT devraient te permettre de tracer ta courbe...


    Citation Envoyé par imen1 Voir le message
    je veux aussi tracer la courbe de la transformation de Fourier de f sur l’intervalle [-10,10].
    Voir la fonction FFT

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut
    Merci bien Dut pour ta réponse, je ne te cache rien, je n'ai pas compris les boucles que tu m'a donné. Donc j'ai cherché sur un manuel de matlab et voila ce que j'ai trouvé:
    Pour la fonction f:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=-3:0.01:3;y = 0.*(x < -1) + 1.*(-1 <= x & x <= 1) + 0.*(1 < x);
    si je veux tracer la courbe de f, sur l'intervalle [-3,3], j'utilise
    Pour la transformation de Fourier de f, j'ai utilisé
    et pour tracer la courbe de la transformation de Fourier de f j'ai utilisé
    Et la les choses se compliquent et se contredisent, voila en fait ce que j'ai obtenu comme message
    Warning: Imaginary parts of complex X and/or Y arguments ignored.
    en plus j'ai obtenu la courbe de la pièce jointe. Cette courbe n'est pas du tout corrcte car on sait que la transformation de fourier de f est le sinus cardinal (sin(Pi*x)/(pi*x)).
    Comment regler ce probleme? et que signifie le message de warning donné par Matlab?
    Merci encore une autre fois.
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Fais un essai :
    - diminue la largeur du créneau
    ou
    - augmente le pas (0.1 par ex)
    en utilisant abs(z)
    et tu auras sin(x)/x

  5. #5
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Voilà une idée de départ :

    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
     
    inc=0;
    f=0;
    for u=-100:0.1:100
        inc=inc+1;
        if (u>-1 && u<1)
           f(inc)=1;
        else
            f(inc)=0;
        end
    end
     
    u=-100:0.1:100;
    subplot(2,1,1)
    plot(u,f)
    F=fft(f);
     
    Pff=F.*conj(F) / numel(F);
    freq=10*(0:1:((numel(F)-1)/2))/(numel(F)-1);
    subplot(2,1,2)
    plot(freq,Pff(1:((numel(F)-1)/2+1)))
    A noter que là, je plot la puissance du signal (c'est à dire Pff). C'est comme ça qu'on enlève les parties imaginaires^^.
    Maintenant, je ne suis pas sur que ça répond à ta question, mais j'espère que ça va te donner une piste sur comment procéder.

    Bon courage

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut
    Merci bien pour vos réponses,
    @phryte: j'ai augmenté le pas comme tu m'as proposé, la courbe obtenu est plus logique que celle obtenue au début mais ce n'est pas encore celle que je dois trouver, en effet je dois trouver la courbe de la fonction sin(x)/x. Il est à noter que je n'ai pas compris qu'est ce que vous vouler dire par: diminuer le créneau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x=-3:0.1:3;y = 0.*(x < -1) + 1.*(-1 <= x & x <= 1) + 0.*(1 < x);
    >> z=fft(y);
    >> plot(x,z)
    Warning: Imaginary parts of complex X and/or Y arguments ignored.
    @Dam2227, j'ai executé le programme que tu m'as proposé, je ne l'ai pas compris mais tout de meme ça n'a pas donné la courbe de la fonction sin(x)/x.
    En effet j'ai obtenu la coube pour les réels positifs, et qu'est ce qu'a propos des autres (les négatifs). De plus la fonction tracée ne prend pas la valeur 1 en 0 ce qui est le cas pour la fonction sin(x)/x.
    Merci tout de meme pour vos réponses. Vos commentaire seronts les bien venus

Discussions similaires

  1. Transformé de Fourier d'un produit de fonctions
    Par lolzx dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/12/2014, 11h22
  2. Réponses: 1
    Dernier message: 02/11/2009, 13h23
  3. Compréhension fonction transformée de Fourier
    Par NulleenMatlab dans le forum Signal
    Réponses: 6
    Dernier message: 08/05/2008, 11h59
  4. Réponses: 10
    Dernier message: 26/06/2007, 14h14
  5. Dérivation dune fonction
    Par srvremi dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/07/2002, 14h21

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