2017-08-07 2 views
2

J'ai un ensemble de points décrivant une courbe fermée dans le plan complexe, appelez-le Z = [z_1, ..., z_N]. Je voudrais interpoler cette courbe, et comme elle est périodique, l'interpolation trigonométrique semblait un choix naturel (surtout en raison de sa précision accrue). En effectuant la FFT, on obtient les coefficients de Fourier:Pourquoi le traitement de l'index en tant que variable continue ne fonctionne-t-il pas lors de l'exécution d'une transformée de Fourier discrète inverse?

F = fft(Z); 

À ce stade, nous pourrions obtenir Z revenir par la formule (où 1i est l'unité imaginaire, et nous utilisons (k-1)*(n-1) parce que l'indexation Matlab commence à 1)

    N 
    Z(n) = (1/N) sum F(k)*exp(1i*2*pi*(k-1)*(n-1)/N), 1 <= n <= N. 
       k=1 

Ma question

y at-il des raisons pour lesquelles n doit être un entier? Vraisemblablement, si nous traitons n comme n'importe quel nombre réel entre 1 et N, nous obtiendrons juste plus de points sur la courbe interpolée. Est-ce vrai? Par exemple, si nous voulions doubler le nombre de points, pourrait-nous pas

    N 
    Z_new(n) = (1/N) sum F(k)*exp(1i*2*pi*(k-1)*(n-1)/N), with n = 1, 1.5, 2, 2.5, ..., N-1, N-0.5, N 
       k=1 

?

Les nouveaux points sont bien sûr juste soumis à une erreur d'interpolation, mais ils seront assez précis, non? La raison pour laquelle je pose cette question est parce que cette méthode ne fonctionne pas pour moi. Quand j'essaie de faire cela, je reçois un tas de points brouillés qui n'a aucun sens.


(Soit dit en passant, je sais que je pouvais utiliser la commande interpft(), mais je voudrais ajouter des points que dans certaines zones de la courbe, par exemple entre z_a et z_b)

Répondre

3

Le point est quand n est un nombre entier, vous avez quelques fonctions primaires qui sont orthogonales et peuvent servir de base pour l'espace. Quand, n n'est pas entier, les fonctions exponentielles dans la formule, ne sont pas orthogonales. Par conséquent, l'expression d'une fonction basée sur ces bases non orthogonales n'est pas significative autant que prévu.

Pour le cas d'orthogonalité, vous pouvez voir ce qui suit à titre d'exemple (à partir de here). Comme vous pouvez le vérifier, vous pouvez trouver deux n_1 et n_2 qui ne sont pas entiers, les intégrales suivantes ne sont plus nulles, et elles ne sont pas orthogonales.

enter image description here

+0

Oh c'est une bonne réponse. Merci beaucoup! (Je sais que les questions de suivi sont parfois ennuyeuses, mais,) pourriez-vous suggérer un moyen d'ajouter des points comme je suis en train de faire ici d'une manière qui fonctionne réellement? – Alex

+0

La réponse est oui, vous pouvez ajouter des points et essentiellement interpoler à ces fréquences discrètes. Découvrez la fonction 'czt' si vous avez des nœuds qui peuvent être écrits sous cette forme (c'est-à-dire uniformément espacés d'une certaine manière). Sinon, ce que vous cherchez est probablement une FFT non uniforme. – CKT