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