1
我在時域有一些數據,每個元素之間的時間間隔是dt,我的數據是從0到N * dt秒,我希望看到我的數據從.6e15 Hz到1e15 Hz的頻譜,我該怎麼辦?離散傅立葉變換在matlab中的數據?
我在時域有一些數據,每個元素之間的時間間隔是dt,我的數據是從0到N * dt秒,我希望看到我的數據從.6e15 Hz到1e15 Hz的頻譜,我該怎麼辦?離散傅立葉變換在matlab中的數據?
下面是代碼,我需要:
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-9M T0的範圍變換實施例的500E-9M
讓我們說你已經有了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));
X爲sin函數爲固定瓦特例如w = 2 * pi * 2e15,我們必須只有峯值和一個鏡像峯值,而您的代碼我會看到大約10個峯值。 – peaceman 2012-04-02 05:44:29
你試圖做什麼?把你的代碼,我們將解決它。 – 0x90 2012-04-02 06:31:30
我有電場在一個點和時間域我想看看我的電場的光譜行爲我認爲你的代碼會幫助我,但我想確保它正常工作,爲了測試它我把罪(2 * pi * 2e15。* t)而不是x我只是想要一個在sin頻率有一個峯值的圖表,你可以改變你的代碼來做這件事嗎?(只需修復w並只顯示一個峯值)非常感謝。 – peaceman 2012-04-02 06:40:03