【发布时间】:2012-04-02 14:41:25
【问题描述】:
我尝试显示简单正弦波的频谱,因为我们知道具有固定频率的单个正弦波在其频谱中必须具有峰值我编写了这段代码,但我无法得到这个峰值我的代码有什么问题:
clc
nsteps=200;%number of signal elements in time domain
i=sqrt(-1);
NFREQS=100;%number of elements in frequency domain
ddx=1e-9;
dt=ddx/(6e8);%separation between each time domain elements
lambdai=150e-9;
lambdaf=500e-9;
freqi=3e8/lambdai;
freqf=3e8/lambdaf;
freq=zeros(1,NFREQS);
for j=1:NFREQS
freq(j)=freqi-j*(freqi-freqf)/NFREQS;%desired frequency domain
end
arg=2*pi*freq*dt;
et=zeros(nsteps,1);
for j=1:nsteps
et(j)=sin(2*pi*3e15*j*dt);%sin wave in time domain
end
e=zeros(NFREQS,1);
for n=1:NFREQS
for j=1:nsteps
e(n)=e(n)+et(j)*exp(-i*arg(n)*n);%sin wave in frequency domain
end
end
lambda=linspace(lambdai,lambdaf,NFREQS);
plot(lambda,abs(e))
【问题讨论】:
-
@OliCharlesworth 我在编辑中添加结果。
标签: matlab signal-processing fft