Matlab vérité

A

Aya2002

Guest
Salut les experts,
j'ai un quistion ici, s'il vous plaît lire la suite Paragraphe comme dans un document pdf sur le web:

La transformée de Fourier peut être calculé en utilisant le code Matlab
Fk = fft (fn) / N;% La FFT du signal fn
fn = IFFT (Fk) * N;% La FFT inverse
IFFT (fft (fn));% Ce résultat = fn (au sein de la machine de précision)

Nous devons diviser par le nombre de points de la grille N si l'on veut utiliser les résultats de la FFT, Matlab met parce que la normalisation dans la transformée inverse.En conséquence, nous devons multiplier par le IFFT N Matlab pour contrer
la division par N.

mon doute est: est le plus haut est correcte?

Je vous remercie à l'avance.Ajouté après 3 heures:une réponse
s'il vous plaît

 
Salut Aya2002,
Je wrtie code
et puis je vais conclure.

Testé sans utiliser de facteur de normalisation (1 / N):

time_signal = [1 2 3 4 3 2];
FFT_time_signal = fft (time_signal);
INVERSE_FFT_time_signal = IFFT (FFT_time_signal);

o / pi a:
FFT_time_signal = 15 -4 0 -1 0 -4
INVERSE_FFT_time_signal = 1 2 3 4 3 2Testé avec l'aide de facteur de normalisation (1 / N):

time_signal = [1 2 3 4 3 2];
FFT_time_signal = fft (time_signal). / Longueur (time_signal);
INVERSE_FFT_time_signal = IFFT (FFT_time_signal) .* longueur (time_signal);

FFT_time_signal = 2,5000 -0,6667 0
-0,1667 0
-0,6667INVERSE_FFT_time_signal = 1,0000 2,0000 3,0000 4,0000 3,0000
2,0000

conclusion:
Selon la formule DFT ne pas utiliser la normalisation.
Au lieu de IDFT utilise facteur de normalisation (1 / N) dans la formule.
d'où la matlab functon "fft" fonctionne aussi comme formule ne n't utilisation facteur de normalisation (1 / N) & "IFFT" fonctionne également comme facteur de normalisation utilise la formule (1 / N).même sans l'extension, nous pouvons obtenir le même o / p.
quelle est la adv de l'utilisation d'un facteur d'échelle dans la fft et IFFT?
Je pense que l'on peut penser et d'obtenir la réponse à cela.

J'espère que nous trouverons bientôt ......

heureux d'apprentissage.

 
My Friend,

voir mon experement ci-dessous:

x = ones (1,5)

x =

1 1 1 1 1

>> S = fft (x)

s =

5 0 0 0 0

>> IFFT (s)

ans =

1 1 1 1 1

comme indiqué ci-dessus, Matlab fait une conversion et de conversion inverse sans besoin de faire une normalisation, c'est-à-dire, que je
n'ai pas besoin de normalisation, tandis que le fichier Pdf a dit que nous devons utiliser la normalisation.À partir de laquelle je en conclure que ce document
n'est pas correct.

Maintenant, pour votre quiation "quel est le adv d'utiliser un facteur d'échelle dans la fft et IFFT ???",
s'il vous plaît voir mes answere ci-dessous;

lorsque nous représentons un signal dans matlab, nous utilisons généralement deux vecteurs, l'un pour les x-données et un pour le y-data.La FFT commande ne fonctionne que sur les données-y (y-la conversion des données de temps de domaine pour le domaine des fréquences).Il est donc à l'utilisateur de déterminer ce que le x-données dans le domaine des fréquences sera!

Maintenant, laissez-nous pour prendre un exemple:

y (t) = 2cos (2 Π de t)
-------------------------

pour = 4;
Fs = 100;
Ts = 1/Fs;
t = 0: T :1-T;
n =
length (t);
y = 2 * sin (2 * pi * pour * t);
plot (t, y);<img src="http://images.elektroda.net/9_1236975577_thumb.jpg" border="0" alt=""/> quand nous prenons la fft de cette courbe, nous attendons l'idéal pour obtenir le spectre de la suite dans le domaine des fréquences, nous nous attendons à un pic d'amplitude de 1 à -4 Hz, et un autre pic d'amplitude 1 à
4 Hz.Alors, laissez-nous l'utilisation
de matlab construit en fonction fft pour voir les résultats.

yfr = fft (y);
tige (abs (yfr));
<img src="http://images.elektroda.net/18_1236975954_thumb.jpg" border="0" alt=""/> à partir de la figure ci-dessus, il
n'est pas tout à fait ressembler à ce que nous avons prévu ci-dessus.Si nous remarquons Quelques il ya des choses qui manquent:
1.L'axe des x nous donne aucune information sur la fréquence.Comment peut-on dire que les sommets sont au bon endroit?

2.L'amplitude est tout le chemin
jusqu'à 100.

3.Le spectre
n'est pas centrée autour de zéro.

Pour résoudre ces problèmes, il faut normaliser les données et l'utilisation de la fonction matlab FFTshift après la fonction FFT comme suit;

function [X freq] = centeredFFT (x, Fs)

N = longueur (x);
si mod (N, 2) == 0
k =- N / 2: N/2-1;
autre
k =- (N / 2) / 2: (N-1) / 2;
fin
T = N / Fs;
freq = k / T;% La fréquence axe.
X = fft (x) / N;% Normaliser les données.
X = fftshift (X); déplacer le fft% des données de sorte
qu'il soit centré.l'o / p de la fonction ci-dessus sera la bonne plage de fréquence et de la transformation du signal.

nous allons utiliser cette fonction dans l'exemple:

[yfDom, frange] = centeredFFt (y, Fs);
tige (frange, abs (yfDom));<img src="http://images.elektroda.net/100_1236977177_thumb.jpg" border="0" alt=""/> comme on peut le voir sur la parcelle ci-dessus, les informations à l'intérieur du spectre de fréquence est totalement symétrique.

Espérons que cela est clair.

Montadar

 
s'il vous plaît voir ce site.

normalement lorsque nous fft (x), nous obtenons ampitude énorme.nous ne l'échelle en divisant par N et, bien que le calcul inverse fft nous faisons également l'entartrage.si nous le faisons, nous cant parsevals satisfaire théorème qui maintient unitaire entre la FFT
et IFFT.
Aussi, la raison pour laquelle nous avons essentiellement fft échelle?

toutes ces réponses sont en cours de discussion dans le site mentionné ci-dessous

pl voir discussion (entre Matt et Ramya)
http://www.mathworks.fr/matlabcentral/newsreader/view_thread/174066

aussi et surtout de ce site:
http://www.mathworks.fr/matlabcentral/newsreader/view_thread/246628

Voir enfin, nous avons la réponse.Happy apprentissage

 
merci beaucoup ami et
j'espère vous revoir en bonne santé après la chirurgie

bonne chance et G * D vous sauver

 

Welcome to EDABoard.com

Sponsor

Back
Top