2017-01-02 1 views
0

J'essaie d'obtenir le signal de domaine temporel à partir d'une formule analytique dans le domaine de fréquence, plus précisément, la formule est:Obtenir IFFT de domaine fréquentiel de formule analytique

Formula implemented

Le problème se pose lorsque la mise en œuvre d'un IFFT , étant donné que la réponse impulsionnelle suivante est obtenue:

Impulse response

Il est clair que la première partie semble être ok, cependant, il y a un haut niveau de bruit et une augmenter la «pente» lorsque le signal prend fin. Maintenant, au démarrage dans le domaine fréquentiel, je définis un vecteur de fréquence, avec une résolution de fréquence basée sur la taille de la FFT.

%% Sampling Frequency + Size FFt 

Fs = 512; %Sampling Frequency 
Nfft = 2^12; %FFT Size 
df = Fs/Nfft; %Frequency Resolution 
f = 0:df:180; %Frequency Vector 

Ensuite, la formule est appliquée et un vecteur de fréquence est obtenu. Plus tard, un IFFT de taille nFFt est appliquée:

%%Obtain impulse response 
x = ifft(P_w,Nfft); %P_w is obtained by formula (1) 
t = (0:(length(x)-1))/Fs; %Time Vector 

Dès que je tracer la partie réelle de x, le résultat obtenu dans l'image 2 est vu. Y at-il des conseils sur la façon de surmonter cela? Je veux dire, je ne devrais pas obtenir cette dernière partie «bruyante» du signal ou est-ce que j'omets une erreur dans le code?

EDIT:

J'ai fait une erreur dans le vecteur de fréquence, en fait, il commence à 0:

f = 0:df:180; %Frequency Vector 
+0

pas 'P_w' devrait être un vecteur d'amplitudes complexes au lieu des fréquences? Comment construisez-vous 'Pn' avant d'appliquer la formule? Pour l'instant il est assez difficile de répondre car ce n'est pas un [mcve] – BillBokeey

+0

En fait, c'est. Je voulais dire que 'P_w' est le signal de domaine fréquentiel obtenu en utilisant la première formule. C'est le signal qui doit être transformé en domaine temporel, donnant une réponse impulsionnelle. –

+0

Bon, je vous suggère de remplacer "vecteur de fréquence" par "vecteur de domaine fréquentiel" dans votre question pour éviter tout malentendu. Maintenant, comment construisez-vous Pn avant d'appliquer votre formule? Ceci est crucial. – BillBokeey

Répondre

0

Dans ma conjecture, vous avez manqué pad zéro sur la gamme basse fréquence sous 5 Hz , si votre P_w est démarré à partir de 5Hz.

En supposant que ma supposition est bonne, plz, mettre 40 zéros devant P_w avant ifft.

40 zéros correspondent à 0Hz ~ 4,875Hz, puisque df = 0,125.

Si P_w est vecteur colonne: P_w=[zeros(40,1);P_w];

Si P_w est vecteur ligne: P_w=[zeros(1,40) P_w];

+0

J'ai fait une erreur dans le vecteur de fréquence, en fait, je reçois la même 'erreur' de départ à partir de 0Hz. En tout cas, merci beaucoup! –