2016-02-06 5 views
0

Matlab a échoué à calculer la fft de cette fonction:Prendre une transformée de Fourier de fonction en utilisant la variable symbolique

syms t; 
x= 1/(1+t^2); 
X= fft(x) 

Et jeté cette erreur:

Undefined function 'fft' for input arguments of type 'sym'.

Pourquoi ne pas prendre la transformée de Fourier de la variable symbolique? Je pense que ce devrait être parce que nous pouvons vouloir obtenir le résultat en tant que valeur symbolique.

J'ai également essayé de résoudre le problème avec une variable non-symbolique.

t= -10:0.01:10; 
x= zeros(2001); 
x= 1/(1+t.^2); 
fft(x) 

cette fois mon erreur est:

Matrix dimensions must agree.

Cependant, ils ont les mêmes dimensions. Où est ma faute?

+0

S'il vous plaît ne pas modifier la question pour dire que vous avez une réponse, j'ai roulé votre édition de retour. Acceptez la réponse qui vous a donné la solution et votez pour toutes les bonnes réponses. – Adriaan

Répondre

0

Le documantation on fft dit:

Y = fft(X) computes the discrete Fourier transform (DFT) of X using a fast Fourier transform (FFT) algorithm.

fonctions symboliques sont continues, pas discret. Par conséquent, l'algorithme échoue.

En ce qui concerne votre deuxième question: utiliser les opérateurs élément par élément, en ajoutant un point:

t= -10:0.01:10; 
x= zeros(2001); 
x= 1./(1+t.^2); 
fft(x) 

Matlab se plaint de dimensions de la matrice, parce que vous essayez de diviser un scalaire (ie une matrice 1 x 1) par un vecteur de longueur 2001. La division par élément résout ce problème.

0

Source: http://www.mathworks.com/matlabcentral/newsreader/view_thread/315950

FFT is a method for numerical discrete Fourier Transform (DFT).

Fondamentalement, ce que vous demandez n'a pas de sens. La FFT est conçue pour fonctionner numériquement sur des données discrètes (une suite de nombres).

Ce que vous voulez, c'est Fourier Transform de votre expression symbolique. Pour cela, je crois que vous voulez .