2017-01-18 10 views
-1

У меня возникла проблема для преобразования оси x из DFT. Поскольку моя модель образца моей оси x находится в метрах (м), а ось y представляет собой rho (плотность длины рассеяния). После получения fft(rho) в matlab я получу интенсивность, но не могу понять, как я должен получить ось x. Я хочу знать, есть ли конкретная формула или пределы для вычисления оси x после DFT.Преобразование оси x в DFT строго для случая неравномерно расположенных образцов в matlab

Вот мой исходный код, Я просто хочу, значения для моей оси х:

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) 

ответ

-1

Если plot(x, rho) правильный участок вашей «временной области» (пространственная область в вашем случае), то ниже правильные оси в частотной области:

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

Здесь q1 проходит от 0 до чуть меньше, чем частота дискретизации неявной в x. Из-за симметрией ДПФА для реальных входов, вы можете также думать о оси частот, идущей от -0.5 * sample rate только менее 0.5 * sample rate:

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

Здесь следует отметить, что я смещаться как ось частот и коэффициенты частотной области самостоятельно с fftshift.

Также обратите внимание, что если вы хотите, чтобы ось частот использовалась в других единицах, вы можете масштабировать их. Например, 2 * pi * q2 помещает их в единицы радианов на метр, поскольку вы можете интерпретировать единицы измерения 2 * pi как радиан за цикл.

Имеет ли это смысл?

+0

Да, но строго для случая неравномерно расположенных выборок. Моя ось x будет меняться, кроме умножения на '2 * pi * q', и, конечно,« q »будет работать от' q = (1: length (x) -1) ' – Mir