2012-04-02 8 views
1

私は時間領域でいくつかのデータを持っています、各要素間の時間間隔はdtで、私のデータは0からN * dt秒です。私のデータのスペクトルを.6e15 Hzから1e15 Hzに見たいのですが?データのmatlabの離散フーリエ変換?

答えて

0

Iが必要なコードは次のとおり

NT=10000;%size of data that I have 
ddx=2e-9; 
dt=ddx/(3e8);%time separation between each element 
i=sqrt(-1); 
NFREQS=1000;%size of frequency array 
lambdai=150e-9; 
lambdaf=500e-9; 
freqi=3e8/lambdai;%lower limit of frequency 
freqf=3e8/lambdaf;%upper limit of frequency 
freq=zeros(1,NFREQS); 
for j=1:NFREQS 
freq(j)=freqi-j*(freqi-freqf)/NFREQS;%frequency array 
end 
arg=2*pi*freq*dt; 
lambda=linspace(lambdai,lambdaf,NFREQS); 
    for n=1:NFREQS 
    for j=1:NT 
    Exf(n)=Exf(n)+Ex(j)*exp(-i*arg(n)*j);%Ex the data that I have and Exf is fft of it 
    end 
    end 

plot(lambda,real(Epsilon)); 

このコードは、フーリエ150E-9メートルT0の500E-9メートル

1

あなたはすでにx時間があるとしましょう。ここ

x%is given 
fmin = 1e15; 
fmax = 6*fmin; 
numOfSamples = length(x); 
f = linspace(fmin,fmax,numOfSamples); 
t = 1 : numOfSamples; 
y=fft(x); 
plot(fftshift(y)); 
+0

の範囲内で実施例の変換計算Xが固定Wのsin関数であります例えばw = 2 * pi * 2e15私たちはあなたのコードでピークとミラーピークを持つ必要があります。私は約10ピークを参照してください。 – peaceman

+0

あなたは何をしようとしましたか?あなたのコードを入れて修正します。 – 0x90

+0

私は一点に電場を持っており、時間領域で電場のスペクトル的挙動を見たいと思っています。あなたのコードは私を助けるでしょうが、それをテストするためには正しく動作していると思います。 2e15。* t)xの代わりに、罪の頻度にピークを持つプロットが必要です。これを行うためにコードを変更してください。(ちょうどwを修正してピークを1つだけ表示してください)ありがとうございます。 – peaceman