Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

interpolation de fonction par FFT



  1. #1
    membreComplexe12

    interpolation de fonction par FFT

    Bonjour tous,

    j'ai vu que sous le logiciel matlab il est possible d'interpoler des points expérimentaux à partir d'une transformée
    de fourier rapide FFT.

    j'aimerai comprendre le principe, les avantages et inconvénients. La seule chose que je connais là dessus c'est se qu'il y a d'inscrit dans l'aide de matlab :
    " The interpft command uses the FFT method. The original vector x is transformed to the Fourier domain using fft and then transformed back with more points. "

    Voici mes questions :
    -> on va faire une FFT sur une courbe expérimentale afin d'avoir les amplitudes des différentes fréquences présente, tout en sachant que le nombre de points de la courbe expérimentale va déterminer la justesse de l'interpolation. Donc pour une fonction expérimental avec peux de points on va surement avoir un résultat pourri ?

    -> ensuite on considère que les "pics" qui ont une amplitude suffisante sont les plus représentatifs et on les conserves (comment savoir le nombre de pics à conserver?)

    -> une fois que ceci est effectué on fait une transformée inverse avec les pics choisis ?

    -> quel est l'intéret de ce type d'interpolation par rapport à des splines par exemple ?

    je vous remercie pour tout les éclaircissement que vous pourrez me donner

    -----


  2. Publicité
  3. #2
    LPFR

    Re : interpolation de fonction par FFT

    Bonjour.
    Quand on utilise une méthode donnée pour interpoler des valeurs, il y a une hypothèse implicite sur la loi (physique, économique, etc.) à laquelle obéissent ces données.
    Si vous utilisez la transformée de Fourier, vous êtes en train d'affirmer, que la loi suivie par les valeurs à exactement le même contenu fréquentiel que vos données. Ce qui, dans la plupart des cas est de la pure fantaisie.
    Mais les splines c'est encore plus con. Car cela consiste à accepter que la loi des données est ne loi polynomiale avec continuité des dérivées. Ce type d'interpolation est intéressant pour les surfaces d'objets crées, car le résultat est agréable à regarder. Pour des données physiques, c'est débile.

    Si on connait la loi physique que les données doivent suivre, il faut utiliser cette loi pour interpoler. Le cas des droites ou de paraboles est assez logique et utilisée.

    Si on ne connait pas la loi que les valeurs doivent suivre, il vaut mieux retourner aux livres, ou à la feuille de papier, car cela veut dire qu'on est en train de mesurer un phénomène dont on ne connaît pas les causes. Dans ce cas toute méthode d'interpolation est totalement fantaisiste et aussi idiote l'une que l'autre.

    Je profite pour vous donner deux phrases du milieu de la recherche:
    "Par trois points il passe toujours une droite".
    "Avec 4 points on peut dessiner un éléphant. Avec un cinquième, on dessine la trompe".

    Au revoir.

  4. #3
    chwebij

    Re : interpolation de fonction par FFT

    bonjour
    Bonjour tous,

    j'ai vu que sous le logiciel matlab il est possible d'interpoler des points expérimentaux à partir d'une transformée
    de fourier rapide FFT.

    j'aimerai comprendre le principe, les avantages et inconvénients. La seule chose que je connais là dessus c'est se qu'il y a d'inscrit dans l'aide de matlab :

    Le principe semble assez basique. Usuellement on utilise une décomposition polynomiale d'une fonction telle que:


    pour pouvoir interpoler des points, c'est à dire calculer entre deux points t déjà connus. La difficulté réside dans le calcul de ces coefficients qu'on obtient par la méthode des moindres carrés.

    Je ne l'ai jamais utilisée, mais la méthode que tu présentes utilise une décomposition en modes de Fourier de la fonction

    avec la fréquence la plus petite. Dans ce cas les coefficients sont plus faciles à trouver car les modes sont tous orthogonaux entre eux. Connaissant ces coefficients, tu peux interpoler les points de ta courbe.

    Cette méthode doit parfaitement marcher si tu veux interpoler des points entre des pas de temps deux fois plus petit que l'inverse de la fréquence de coupure de ton signal (c'est à dire qu'il n'y a plus d'énergie pour dans le spectre de ton signal), c'est à dire


    c'est une autre manière de voir le théorème de Shanonn. Comme le signal ne comporte plus d'information en-dessous de cette fréquence, tu peux interpoler comme tu veux aux petit pas de temps. Donc pour bien faire, il faut que le pas de temps de ton signal soit déjà assez petit où que la fonction que tu veux interpoler se décompose avec peu de modes de Fourier. Dans le cas contraire, c'est à dire si tu n'as pas assez de points initialement dans ta courbe, il faut voir quelle méthode est la plus appropriée.
    AH NON! au moment où la petite flûte allait répondre aux cordes. Vous êtes ODIEUX!!

  5. #4
    phuphus

    Re : interpolation de fonction par FFT

    Bonjour,

    Citation Envoyé par membreComplexe12 Voir le message
    -> on va faire une FFT sur une courbe expérimentale afin d'avoir les amplitudes des différentes fréquences présente, tout en sachant que le nombre de points de la courbe expérimentale va déterminer la justesse de l'interpolation. Donc pour une fonction expérimental avec peux de points on va surement avoir un résultat pourri ?
    Si tu respectes Shannon lors de l'acquisition de tes données, alors 2 points sont OK. Mais je doute que 2 points te donnent suffisamment d'informations...

    Citation Envoyé par membreComplexe12
    -> ensuite on considère que les "pics" qui ont une amplitude suffisante sont les plus représentatifs et on les conserves (comment savoir le nombre de pics à conserver?)
    L'interpolation par FFT, c'est du zero-padding en fréquentiel. On rajoute donc des 0 à la fin du spectre avant de faire une FFT inverse : cela revient à augmenter la fréquence d'échantillonnage sans modifier le contenu fréquentiel du signal original. Mais ce n'est pas une sélection de pics.

    Citation Envoyé par membreComplexe12
    -> quel est l'intéret de ce type d'interpolation par rapport à des splines par exemple ?
    Ne pas "inventer" des fréquences non contenues dans le signal de base. En interpolant, soit tu inventes des informations soit tu respectes les informations contenues dans le signal acquis à l'origine.

  6. #5
    phuphus

    Re : interpolation de fonction par FFT

    Bonjour,

    Citation Envoyé par LPFR Voir le message
    cela veut dire qu'on est en train de mesurer un phénomène dont on ne connaît pas les causes.
    Et c'est là toute la problématique d'une analyse de signaux dits arbitraires : sans parler d'interpolation, une analyse spectrale par DFT n'a strictement aucune utilité si l'on peut "modéliser le signal".

    Mesurer un phénomène dont on ne connaît pas les causes et triturer le signal peut justement permettre d'inférer ces causes, et d'ensuite passer à une analyse pilotée par un modèle. Sans oublier les lois empiriques.

    Citation Envoyé par LPFR
    Dans ce cas toute méthode d'interpolation est totalement fantaisiste et aussi idiote l'une que l'autre.
    Cela dépend de la finalité.

    Si le signal en question est destiné à être envoyé à un convertisseur numérique / analogique avec bloqueur d'ordre 0, alors augmenter la fréquence d'échantillonnage par zero-padding en fréquentiel et augmenter la cadence du convertisseur permet d'avoir en sortie un signal propre sans inventer d'informations fantaisistes.

    Si le signal est destiné à être montré, l'intérêt pédagogique d'une interpolation par FFT est entier.

    Si le signal est destiné à être filtré et que la stabilité du filtre dépend de la fréquence d'échantillonnage, l'intérêt de l'interpolation par FFT est entier.

    Si le signal est destiné à être mélangé, avant analyse, à un autre signal dont la fréquence d'échantillonnage est différente, commencer par interpoler par FFT avant de mélanger n'est pas fantaisiste : on n'invente pas d'informations.

    Si le signal doit nourrir une loi empirique.

    Si le signal ...

  7. A voir en vidéo sur Futura
  8. #6
    membreComplexe12

    Re : interpolation de fonction par FFT

    Merci tous pour vos réponses j'y vois un peu plus clair !!!

    Citation Envoyé par phuphus Voir le message
    Si tu respectes Shannon lors de l'acquisition de tes données, alors 2 points sont OK. Mais je doute que 2 points te donnent suffisamment d'informations...
    Si j'ai bien compris le theoreme de Shanon alors ce que je dis ici ne doit pas être trop con :
    Si je prends une fréquence d'echantillonage expérimentale de 50Hz alors je ne pourrais par une FFT avoir que des pics avec au plus 25Hz.
    Du coup il faut que je sache deja avant tout que je sache quel type de signal j'ai avant de faire une interpolation par FFT car si je choisi une
    fréquence d'echantillonage "moyenne" alors je ne pourrai pas interpoler des signaux "haute fréquence".
    --> en gros, cette interpolation est utilisable que si on sais ce que l'on a comme type de signal ?

    J'ai une dernière question afin de bien comprendre les conséquenses du non respect du th. de Shanon : (ça date de quelques souvenir donc desolé si je suis un peu imprécis)
    récemment (grace à l'aide Phuphus d'ailleurs et d'autres sur le forum) j'ai fais de la FFT sur des signaux temporelles qui afin deux frequences 50Hz et 150Hz.

    Lors de ma FFT qui je prends une frequence d'echantillonage de 300Hz tout se passe bien. Par contre, ensuite j'ai pris une frequence d'environ 150Hz (je ne me rappel plus)
    et je m'attendais donc à ne pas avoir de pics mais j'en ai quand même eu 1 il me semble mais il était complétement faux....

    du coup, ce que j'en ai conclu :
    si on ne respect pas le theoreme de Shanon alors on va obtenir quand même des pics lors de la FFT mais ils seront faux ?
    Si ce que je dis est correct alors c'est un peu piègeux car lorsqu'on fait de l'interpolation par FFT on a pas de garde-fou
    on va penser que les spectres que l'on a représente la réalité mais ça se trouve ils sont complétement faux ?


    Citation Envoyé par phuphus Voir le message
    L'interpolation par FFT, c'est du zero-padding en fréquentiel. On rajoute donc des 0 à la fin du spectre avant de faire une FFT inverse : cela revient à augmenter la fréquence d'échantillonnage sans modifier le contenu fréquentiel du signal original. Mais ce n'est pas une sélection de pics.
    je sais (crois savoir...?) ce que c'est le zero padding en temporelle :
    on ajoute des zeros à la fin de notre fonction afin d'avoir plus de points et donc pouvoir capter plus de frequences sur notre spectre?

    par contre le zero padding en frequentielle je ne comprends pas vraiment :
    si on a par exemple 4 pics sur le spectre complet ça veut dire que l'on a 2 fréquences présentes dans le signal et si je fais une FFT inverse pourquoi ile me faudrait plus de points
    que ce que j'ai deja ...? (je suis perdu sur ce coup...)

    Citation Envoyé par phuphus Voir le message
    Ne pas "inventer" des fréquences non contenues dans le signal de base. En interpolant, soit tu inventes des informations soit tu respectes les informations contenues dans le signal acquis à l'origine.
    je comprends, j'avoue que c'est très intéressant (si on a une frequence echantillonage suffisammente elevée).

  9. Publicité
  10. #7
    phuphus

    Re : interpolation de fonction par FFT

    Bonjour,

    avant de continuer il faut savoir si tu es dans le cadre des explications de LPFR : que représentent tes points expérimentaux ?

  11. #8
    membreComplexe12

    Re : interpolation de fonction par FFT

    Citation Envoyé par phuphus Voir le message
    Bonjour,
    avant de continuer il faut savoir si tu es dans le cadre des explications de LPFR : que représentent tes points expérimentaux ?
    salut Phuphus,
    non je ne suis pas dans le cadre des explications de LPFR (mais j'apprécie quand même ça remarque que je trouve très juste).
    En fait je cherche juste à comprendre dans quelle mesure je peux appliquer une interpolation par FFT juste à des fins pédagogiques/théoriques.

    ps1: au passage j'essai aussi de faire le point sur la FFT et FFT inverse car j'ai peut que 2-3trucs m'echappent encore... (d'où mes multiples questions si dessus)

    ps2: au fait c'est difficile à programmer une FFT et une FFT inverse avec ou sans du zero padding ? j'aimerai bien tester un de ces quatre

  12. #9
    phuphus

    Re : interpolation de fonction par FFT

    Bonsoir,

    sous Matlab c'est très simple, il faut juste faire appel aux fonctions adéquates. Le plus compliqué est juste de respecter quelques règles de base dans les domaines temporel / fréquentiel pour ne pas manipuler des données "non autorisées" (signal temporel réel, spectre symétrique, etc.).

    Un exemple de code pour une interpolation FFT, si tu veux plus robuste tu as juste à ouvrir le fichier "interpft.m" de ton install Matlab :

    Code:
    % Interpolation FFT
    % Exemple emblématique : 
    % sinus proche de la fréquence de Nyquist avec nombre entier de périodes
    
    clear all ;
    clc ;
      
    % Constantes
      Fech  = 10000 ;
      Duree = 0.001 ;
      f     = 4000  ;
      t     = [0:1/Fech:Duree-1/Fech] ;
      
    % Génération du signal à interpoler
      Signal = cos(2*pi*f*t)  ;
      Taille = size(Signal,2) ;
      % Tracé
      figure(1)                    ;
      plot(t,Signal,'LineWidth',2) ;
      axis([0 Duree -1.5 1.5])     ;
      hold on                      ;
      
    % Interpolation du signal
      Facteur           = 10                                    ;  % Ratio sur le nombre de points
      Signal_fft        = fft(Signal)                           ;  % FFT
      a                 = Signal_fft(1:Taille/2+1)              ;  % Première moitié du spectre incluant la fréquence de Nyquist
      b                 = Signal_fft(Taille/2+2:Taille)         ;  % Deuxième moitié du spectre
      Signal_fft_interp = [a zeros((Facteur-1)*Taille,1)' b]    ;  % Introduction de zeros au milieu du spectre
      Signal_interp     = ifft(Signal_fft_interp) * Facteur     ;  % FFT inverse
      Fech              = Facteur * Fech                        ;  % Nouvelle fréquence d'échantillonnage
      t                 = [0:1/Fech:Duree-1/Fech]               ;  % Nouvelle base de temps
      % Tracé
      plot(t,Signal_interp,'r') ;
      legend('Signal original','Signal interpolé') ;

  13. #10
    phuphus

    Re : interpolation de fonction par FFT

    Bonsoir,

    Citation Envoyé par membreComplexe12 Voir le message
    Si j'ai bien compris le theoreme de Shanon alors ce que je dis ici ne doit pas être trop con :
    Si je prends une fréquence d'echantillonage expérimentale de 50Hz alors je ne pourrais par une FFT avoir que des pics avec au plus 25Hz.
    Du coup il faut que je sache deja avant tout que je sache quel type de signal j'ai avant de faire une interpolation par FFT car si je choisi une
    fréquence d'echantillonage "moyenne" alors je ne pourrai pas interpoler des signaux "haute fréquence".
    --> en gros, cette interpolation est utilisable que si on sais ce que l'on a comme type de signal ?
    Le théorème de Shannon est plus restrictif : il dit que pour un signal donné, si tu veux pouvoir l'échantillonner sans perdre de données ni créer de données fantômes, la fréquence d'échantillonnage doit être au moins égale à deux fois la plus haute fréquence contenue dans ton signal.

    Citation Envoyé par membreComplexe12
    J'ai une dernière question afin de bien comprendre les conséquenses du non respect du th. de Shanon : (ça date de quelques souvenir donc desolé si je suis un peu imprécis)
    récemment (grace à l'aide Phuphus d'ailleurs et d'autres sur le forum) j'ai fais de la FFT sur des signaux temporelles qui afin deux frequences 50Hz et 150Hz.

    Lors de ma FFT qui je prends une frequence d'echantillonage de 300Hz tout se passe bien. Par contre, ensuite j'ai pris une frequence d'environ 150Hz (je ne me rappel plus)
    et je m'attendais donc à ne pas avoir de pics mais j'en ai quand même eu 1 il me semble mais il était complétement faux....

    du coup, ce que j'en ai conclu :
    si on ne respect pas le theoreme de Shanon alors on va obtenir quand même des pics lors de la FFT mais ils seront faux ?
    Si ce que je dis est correct alors c'est un peu piègeux car lorsqu'on fait de l'interpolation par FFT on a pas de garde-fou
    on va penser que les spectres que l'on a représente la réalité mais ça se trouve ils sont complétement faux ?
    Tu viens d'expérimenter du repliement. Un schéma te montrera immédiatement de quoi il s'agit :

    http://fr.wikipedia.org/wiki/Repliement_de_spectre

  14. #11
    membreComplexe12

    Re : interpolation de fonction par FFT

    merci beaucoup Phupuhus,
    c'est beaucoup plus clair à présent !!!

  15. #12
    membreComplexe12

    Re : interpolation de fonction par FFT

    Phuphus, peut on conclure sur cet exemple :

    test numéro 1:
    Code:
    clear all;close all;clc;
    %definition générales
    facteur=100;
    dt=1;
    %signal echantillonné
    t1=0:dt:10;
    y1=sin(2*pi*5*t1)+sin(2*pi*10*t1);
    Fe=length(t1)/(t1(end)-t1(1))
    %reconstruction interpolation
    t=0:dt/facteur:10;
    y=interpft(y1,length(t));
    %plot
    figure (1)
    plot(t1,y1,'*b',t,y,'r')
    voici le résultat : interpolation1.jpg

    ici j'ai une frequence d'echantillonage de Fe=1.1Hz or comme mon signal à ses fréquences supérieures à Fshanon=2.2Hz alors
    c'est normal que mon interpolation ne soit pas bonne, c'est bien cela ?

    test numéro 2:
    Code:
    y1=sin(2*pi*0.05*t1)+sin(2*pi*0.1*t1);
    cette fois j'ai remplacé la fonction par une fonction de fréquence plus basse et voici le résultat : interpolation2.jpg

    ici je suis un peu étonné que l'interpolation ne soit pas meilleure car j'ai une fréquence d'echantillonage qui est 2*supérieur à la plus haute fréquence
    de mon signal. Je m'attendais à une interpolation quasi parfaite.... ?

    qu'es ce qui fait que ce ne soit pas meilleur ? que dois je faire pour que ce soit meilleur ?
    Je pense qu'il faut augmenté de nombre de points expérimentaux et donc Fe mais ce n'est pas toujours possible...

  16. Publicité
  17. #13
    membreComplexe12

    Re : interpolation de fonction par FFT

    c'est bon j'ai compris !!!

    il faut que je fasse du Zero padding temporelle avec ma fonction expérimental afin d'augmenter le nb de points et la frequence d'echantillonage
    ensuite ça devrait marcher nickel et je pourrai controler la précision !

    je pense avoir compris, merci beaucoup PhuPhus

  18. #14
    membreComplexe12

    Re : interpolation de fonction par FFT

    J'ai essayer d'augmenter Fe avec du zero padding temporel mais je me suis planté quelque part,
    ça ne fonctionne pas. Pourriez vous me dire ce qu'il ne vas pas dans ce bout de code matlab ?

    Code:
    clear all;close all;clc;
    %definition générales
    facteur=100;
    dt=1;
    %signal echantillonné
    t1=0:dt:10;
    y1=sin(2*pi*5*t1)+sin(2*pi*10*t1);
    Fe=length(t1)/(t1(end)-t1(1))
    %reconstruction interpolation
    t=0:dt/facteur:10;
    %zero padding temporel
    y1padding=[y1 zeros(1,10)];
    FeAvecPadding=length(y1padding)/(t1(end)-t1(1))
    y=interpft(y1padding,length(t));
    %plot
    figure (1)
    plot(t1,y1,'*b',t,y,'r')
    la fréquence d'echantillonage a été multipliée par 2, je m'attendais donc à un résultat meilleur que l'interpolation précédente mais ce n'est pas le cas...
    j'obtient des oscillations : interpolationAvecPadding.jpg

    pourriez vous me dire comment corriger ceci dans mon code et m'expliquer pourquoi c'est faux ? (je pensais vraiment que c'était correct cette fois...)
    merci beaucoup !!!

  19. #15
    phuphus

    Re : interpolation de fonction par FFT

    Bonsoir,

    Citation Envoyé par membreComplexe12 Voir le message
    Phuphus, peut on conclure sur cet exemple :

    test numéro 1:
    Code:
    clear all;close all;clc;
    %definition générales
    facteur=100;
    dt=1;
    %signal echantillonné
    t1=0:dt:10;
    y1=sin(2*pi*5*t1)+sin(2*pi*10*t1);
    Fe=length(t1)/(t1(end)-t1(1))
    %reconstruction interpolation
    t=0:dt/facteur:10;
    y=interpft(y1,length(t));
    %plot
    figure (1)
    plot(t1,y1,'*b',t,y,'r')
    voici le résultat : Pièce jointe 218151

    ici j'ai une frequence d'echantillonage de Fe=1.1Hz or comme mon signal à ses fréquences supérieures à Fshanon=2.2Hz alors
    c'est normal que mon interpolation ne soit pas bonne, c'est bien cela ?

    test numéro 2:
    Code:
    y1=sin(2*pi*0.05*t1)+sin(2*pi*0.1*t1);
    cette fois j'ai remplacé la fonction par une fonction de fréquence plus basse et voici le résultat : Pièce jointe 218152

    ici je suis un peu étonné que l'interpolation ne soit pas meilleure car j'ai une fréquence d'echantillonage qui est 2*supérieur à la plus haute fréquence
    de mon signal. Je m'attendais à une interpolation quasi parfaite.... ?

    qu'es ce qui fait que ce ne soit pas meilleur ? que dois je faire pour que ce soit meilleur ?
    Je pense qu'il faut augmenté de nombre de points expérimentaux et donc Fe mais ce n'est pas toujours possible...
    Je découvre aussi avec toi, ne t'étonne donc pas du délai de mes réponses : il faut que je fasse quelques essais sous Matlab avant de te répondre.

    Apparemment, un nombre de points impair ne permet pas de faire passer la fonction interpolée par les points originaux, certainement une subtilité due à la fréquence de Nyquist qui n'est pas point de symétrie du spectre quand le nombre de points est impair, alors qu'une fois la fonction interpolée le nombre de points devient pair (multiplication par Facteur = 100).

    Essaye donc ce code :
    Code:
    clear all;close all;clc;
    %definition générales
    facteur=100;
    dt=1;
    %signal echantillonné
    t1=0:dt:10-dt;
    y1=sin(2*pi*0.05*t1)+sin(2*pi*0.1*t1);
    Fe=(length(t1)-1)/(t1(end)-t1(1))
    %reconstruction interpolation
    t=0:dt/facteur:10-(dt/facteur);
    y=interpft(y1,length(t));
    %plot
    figure (1)
    plot(t1,y1,'*b',t,y,'r')
    P.S. : j'ai corrigé au passage le calcul de la fréquence d'échantillonnage. Une histoire de piquets et de distances...

  20. #16
    phuphus

    Re : interpolation de fonction par FFT

    Bonsoir,

    Citation Envoyé par membreComplexe12 Voir le message
    J'ai essayer d'augmenter Fe avec du zero padding temporel mais je me suis planté quelque part,
    ça ne fonctionne pas. Pourriez vous me dire ce qu'il ne vas pas dans ce bout de code matlab ?

    Code:
    clear all;close all;clc;
    %definition générales
    facteur=100;
    dt=1;
    %signal echantillonné
    t1=0:dt:10;
    y1=sin(2*pi*5*t1)+sin(2*pi*10*t1);
    Fe=length(t1)/(t1(end)-t1(1))
    %reconstruction interpolation
    t=0:dt/facteur:10;
    %zero padding temporel
    y1padding=[y1 zeros(1,10)];
    FeAvecPadding=length(y1padding)/(t1(end)-t1(1))
    y=interpft(y1padding,length(t));
    %plot
    figure (1)
    plot(t1,y1,'*b',t,y,'r')
    la fréquence d'echantillonage a été multipliée par 2, je m'attendais donc à un résultat meilleur que l'interpolation précédente mais ce n'est pas le cas...
    j'obtient des oscillations : Pièce jointe 218156

    pourriez vous me dire comment corriger ceci dans mon code et m'expliquer pourquoi c'est faux ? (je pensais vraiment que c'était correct cette fois...)
    merci beaucoup !!!
    Le zero-padding en temporel ne fait que rallonger le signal avec des échantillons nuls. La fréquence d'échantillonnage reste donc la même.

  21. #17
    membreComplexe12

    Re : interpolation de fonction par FFT

    Citation Envoyé par phuphus Voir le message
    Bonsoir,
    Bonsoir Phuphus et merci de ton aide encore une fois !!!
    Citation Envoyé par phuphus Voir le message
    Je découvre aussi avec toi, ne t'étonne donc pas du délai de mes réponses : il faut que je fasse quelques essais sous Matlab avant de te répondre.
    D'accord, pas de soucis, je suis déjà très content que tu prennes du temps pour m'aider à comprendre ces choses
    Citation Envoyé par phuphus Voir le message
    Apparemment, un nombre de points impair ne permet pas de faire passer la fonction interpolée par les points originaux, certainement une subtilité due à la fréquence de Nyquist qui n'est pas point de symétrie du spectre quand le nombre de points est impair, alors qu'une fois la fonction interpolée le nombre de points devient pair (multiplication par Facteur = 100).
    Je vois l'idée, ça se tient effectivement. Es ce que l'interpolation par FFT ne ferait pas pa defaut quelque chose avec un nombre de points multiple de 2 ?
    Citation Envoyé par phuphus Voir le message
    Essaye donc ce code :
    Code:
    clear all;close all;clc;
    %definition générales
    facteur=100;
    dt=1;
    %signal echantillonné
    t1=0:dt:10-dt;
    y1=sin(2*pi*0.05*t1)+sin(2*pi*0.1*t1);
    Fe=(length(t1)-1)/(t1(end)-t1(1))
    %reconstruction interpolation
    t=0:dt/facteur:10-(dt/facteur);
    y=interpft(y1,length(t));
    %plot
    figure (1)
    plot(t1,y1,'*b',t,y,'r')
    merci beaucoup pour ce bout de code, effectivement ça marche beaucoup mieux!
    [/QUOTE]P.S. : j'ai corrigé au passage le calcul de la fréquence d'échantillonnage. Une histoire de piquets et de distances...[/QUOTE]
    merci,
    j'ai toujours des problèmes avec ceci, avantje mettais la même relation que toi mais je pense que c'est correct ceci à présent...

    En fait j'ai vu dans un cours sur la FFT que la fréquence fondamental de notre signal non périodique est égale à :

    (pas de soucis pour ceci) et que ça pouvait s'exprimer en fonction de la frequence d'echantillonage:

    d'où la relation que j'ai mis plus haut.

    j'ai eu une discussion déjà sur ce sujet sur ce lien : http://www.siteduzero.com/forum/suje...echantillonage
    qu'en penses tu ?

  22. #18
    membreComplexe12

    Re : interpolation de fonction par FFT

    Citation Envoyé par phuphus Voir le message
    Le zero-padding en temporel ne fait que rallonger le signal avec des échantillons nuls. La fréquence d'échantillonnage reste donc la même.
    j'ai un peu de mal avec ceci aussi....
    la fréquence d'echantillonage est défini par un nombre de points divisés par un "temps total" donc si je rajoute des points pour un même "temps total"
    alors je devrais bien augmenter Fe ?

    Si en faisant du Zero padding en temporelle ça ne change pas Fe alors ça ne sert à rien de faire ceci ?
    Pour moi la seule raison de faire du Zero padding temporelle était d'augmenter le nombre de points
    et ainsi Fe. Ensuite on peut donc respecter Shanon....?

    Apparemment ce que je dis est faut donc quel est l'intérêt du zero padding temporel ? si on ne modifie pas Fe alors on ne pourra
    rien faire pour respecter Shanon si dans le cas de depart on ne le respecté deja pas ? donc pas d'intérêt ?

  23. Publicité
  24. #19
    membreComplexe12

    Re : interpolation de fonction par FFT

    en fait si je comprends bien le seul intérêt d'avoir du zero padding temporelle et juste augmenter le nombre de points dans le spectre (et donc améliorer
    la discrétisation spectrale) mais on aura pas plus de fréquence dans le spectre ? c'est juste que les "pics" vont être mieux net ?

    mais quand même, si on a plus de points alors Fe=N/tpsTotal devrait bien augmenter ?

    si j'ai plus de points dans ma fonction alors j'aurais plus de points dans mon spectre ? et donc plus de pics représentatif d'harmoniques ?
    et donc si je fais une "ifft" mon signal temporelle sera meilleur ?

  25. #20
    GrisBleu

    Re : interpolation de fonction par FFT

    Citation Envoyé par membreComplexe12 Voir le message
    donc si je fais une "ifft" mon signal temporelle sera meilleur ?
    Non, tu vas retomber sur ton signal de depart, ou tu as ajoute des 0. On ne gagne de l'information gratuitement
    Le zero padding en temporel (respectivement en frequentiel) revient a mieux echantillonner ton signal frequentiel (resp. temporel) de depart.
    Ca permet de faire des jolis graphiques, ou de rendre visible humainement une information, mais mathematiquement, tu as toujours la meme information
    A bientot

  26. #21
    membreComplexe12

    Re : interpolation de fonction par FFT

    Citation Envoyé par GrisBleu Voir le message
    Non, tu vas retomber sur ton signal de depart, ou tu as ajoute des 0. On ne gagne de l'information gratuitement
    Le zero padding en temporel (respectivement en frequentiel) revient a mieux echantillonner ton signal frequentiel (resp. temporel) de depart.
    Ca permet de faire des jolis graphiques, ou de rendre visible humainement une information, mais mathematiquement, tu as toujours la meme information
    A bientot
    d'accord, merci GrisBleu pour ces précisions très intéressantes !!
    je pense avoir compris à présent

Sur le même thème :

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/12/2011, 00h32
  2. Interpolation/Extrapolation d'une fonction ?
    Par anthony_unac dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 22/02/2011, 18h05
  3. Interpolation 2d
    Par naffrancois dans le forum Physique
    Réponses: 8
    Dernier message: 11/12/2009, 09h22
  4. Excel et interpolation par une gaussienne
    Par Khrouchtchev dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 05/10/2008, 13h18
  5. interpolation
    Par rhomuald dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 09/01/2008, 20h44