2017-01-18 3 views
-1

Je suis confronté à un problème pour la conversion de l'axe x de DFT. Comme mon exemple de modèle de mon axe x est en mètres (m) et l'axe y représente le rho (densité de longueur de diffusion). Après avoir pris le fft(rho) en matlab, j'obtiendrai l'intensité mais je n'arrive pas à comprendre comment je devrais obtenir l'axe x. Je veux savoir s'il existe une formule ou des limites spécifiques pour calculer l'axe x après la TFD.Conversion de l'axe x dans DFT strictement pour le cas d'échantillons inégalement espacés dans matlab

Voici mon code source, Je veux juste les valeurs de mon axe x:

al=100; 
nipam=20; 
water=300; 
j=1; 
for i=1:15 
    rho(j:j+al)=2.07; 
    k=j+al; 
    rho(k:k+nipam)=0.81; 
    l=k+nipam; 
    rho(l:l+water)=-0.56; 
    m=l+water; 
    rho(m:m+nipam)=0.81; 
    j=m+nipam; 
end 
del_x=1; 
xmax=6600; 
x=(0:del_x:xmax); 
% plot(x,rho) 
A=abs(fft(rho)); 
I=A.^2; 
% del_q=2*pi./xmax; I want to how should I get the x axis???after doing FFT 
% qmax=2*pi./del_x; 
% q=(0:del_q:qmax); 
plot(q,I) 

Répondre

-1

Si plot(x, rho) est le tracé correct de votre « domaine temporel » (domaine spatial dans votre cas), puis ce qui suit est les axes corrects dans le domaine de fréquence:

q1 = [0 : length(x) - 1]/length(x)]/diff(x(1:2)); % q1 in units of cycles per meter 
plot(q1, abs(fft(rho))) 

ici, q1 va de 0 à un peu moins que le taux d'échantillonnage implicite dans x. En raison de la symétrie de la DFT pour les entrées réelles, vous pouvez aussi penser à l'axe des fréquences allant de -0.5 * sample rate à un peu moins de 0.5 * sample rate:

q2 = q1 - diff(x(1:2))/2; % still cycles per meter 
plot(q2, abs(fftshift(fft(rho)))) 

Notez ici que je déplace les deux l'axe de fréquence et les coefficients de domaine fréquentiel eux-mêmes avec fftshift.

Notez également que si vous souhaitez utiliser l'axe de fréquence dans d'autres unités, vous pouvez les mettre à l'échelle. Par exemple, 2 * pi * q2 les met en unités de radians par mètre, puisque vous pouvez interpréter les unités de 2 * pi comme des radians par cycle.

Est-ce que cela a du sens?

+0

Oui, mais strictement dans le cas d'échantillons inégalement espacés. Mon axe x va changer, sauf multiplier par '2 * pi * q' et bien sûr 'q' ira de' q = (1: longueur (x) -1) ' – Mir