繁体   English   中英

在Matlab中进行离散傅立叶变换以获取数据?

[英]discrete Fourier transform in matlab for data?

我在时域中有一些数据,每个元素之间的时间间隔是dt,我的数据是从0到N * dt sec,我想查看我的数据在0.6e15 Hz到1e15 Hz的频谱,我该怎么办?

假设您已经有了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));

这是我需要的代码:

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

该代码计算Ex在150e-9m t0 500e-9m范围内的傅立叶变换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM