2017-01-18 10 views
-1

DFTからのx軸の変換に問題があります。私のx軸のサンプルモデルはメートル(m)で、y軸はrho(散乱長密度)を表しています。 matlabでfft(rho)を撮った後、私は輝度を得るでしょうが、私はどのようにx軸を取得するべきかを理解できません。 DFT後にx軸を計算するための特定の数式または制限があるかどうかを知りたい。ここでmatlabで不等間隔のサンプルの場合のDFTのx軸の変換

は が、私はちょうど私の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) 

答えて

-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))) 

xにおける暗黙のサンプル・レートよりもちょうど小さい0〜q1実行されます。そのため、実際の入力のDFTの対称性のため、あなたはまた、-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は、1秒あたりのラジアンとして2 * piの単位を解釈できるため、1ラジアン/メートルの単位で表します。

これは意味がありますか?

+0

はい、厳密には不等間隔サンプルの場合です。私のx軸は '2 * pi * q 'で乗算する以外は変わります。もちろんqは' q =(1:length(x )-1) ' – Mir

関連する問題