
FFT 和matlab 采样点数和傅里叶变换所需点数关系? 下面程序中的两个为什么
clear;closeall;T=10e-6;B=30e6;Rmin=8500;Rmax=11500;R=[9000,10000,10200];RCS=[111];C=3...
clear;
close all;
T=10e-6;
B=30e6;
Rmin=8500;Rmax=11500;
R=[9000,10000,10200];
RCS=[1 1 1 ];
C=3e8;
K=B/T;
Rwid=Rmax-Rmin;
Twid=2*Rwid/C;
Fs=5*B;Ts=1/Fs;
Nwid=ceil(Twid/Ts);
t=linspace(2*Rmin/C,2*Rmax/C,Nwid);
M=length(R);
td=ones(M,1)*t-2*R'/C*ones(1,Nwid);
SNR=[1,0.1,0.01,0.001,10,100,1000];
for i=1:1:7
Srt1=RCS*(exp(1i*pi*K*td.^2).*(abs(td)<T/2));
n=sqrt(0.5*SNR(i))*(randn(size(Srt1))+1i*randn(size(Srt1)));
Srt=Srt1+n
Nchirp=ceil(T/Ts);
Nfft=2^nextpow2(Nwid+Nwid-1); ????为什么???
Srw=fft(Srt,Nfft);
Srw1=fft(Srt1,Nfft);
t0=linspace(-T/2,T/2,Nchirp);
St=exp(1i*pi*K*t0.^2);
Sw=fft(St,Nfft);
Sot=fftshift(ifft(Srw.*conj(Sw)));
Sot1=fftshift(ifft(Srw1.*conj(Sw)));
N0=Nfft/2-Nchirp/2; ???为什么????
Z=abs(Sot(N0:N0+Nwid-1));
figure
subplot(211)
plot(t*1e6,real(Srt));
subplot(212)
plot(t*C/2,Z)
end
采样点数N0与计算FFT所需点数N关系?
N是为大于N0的2的幂次方数吗?
另外,N/2-N0/2 代表什么意思? 展开
close all;
T=10e-6;
B=30e6;
Rmin=8500;Rmax=11500;
R=[9000,10000,10200];
RCS=[1 1 1 ];
C=3e8;
K=B/T;
Rwid=Rmax-Rmin;
Twid=2*Rwid/C;
Fs=5*B;Ts=1/Fs;
Nwid=ceil(Twid/Ts);
t=linspace(2*Rmin/C,2*Rmax/C,Nwid);
M=length(R);
td=ones(M,1)*t-2*R'/C*ones(1,Nwid);
SNR=[1,0.1,0.01,0.001,10,100,1000];
for i=1:1:7
Srt1=RCS*(exp(1i*pi*K*td.^2).*(abs(td)<T/2));
n=sqrt(0.5*SNR(i))*(randn(size(Srt1))+1i*randn(size(Srt1)));
Srt=Srt1+n
Nchirp=ceil(T/Ts);
Nfft=2^nextpow2(Nwid+Nwid-1); ????为什么???
Srw=fft(Srt,Nfft);
Srw1=fft(Srt1,Nfft);
t0=linspace(-T/2,T/2,Nchirp);
St=exp(1i*pi*K*t0.^2);
Sw=fft(St,Nfft);
Sot=fftshift(ifft(Srw.*conj(Sw)));
Sot1=fftshift(ifft(Srw1.*conj(Sw)));
N0=Nfft/2-Nchirp/2; ???为什么????
Z=abs(Sot(N0:N0+Nwid-1));
figure
subplot(211)
plot(t*1e6,real(Srt));
subplot(212)
plot(t*C/2,Z)
end
采样点数N0与计算FFT所需点数N关系?
N是为大于N0的2的幂次方数吗?
另外,N/2-N0/2 代表什么意思? 展开
1个回答
展开全部
采样点数越多,fft计算精度越高,但计算量增大,故要选择合适的采样点数.当采样点数等于2次幂数时,可用快速傅里叶变换法,极大提高运算速度,所以一般设定采样点数为2次幂数,实际采样数量不够时,自动以0填补.
因为fft变换结果是对称的,故画图时,去掉了一般数据(第二个算式).
不过我认为上述程序有问题.....
因为fft变换结果是对称的,故画图时,去掉了一般数据(第二个算式).
不过我认为上述程序有问题.....
更多追问追答
追问
程序应该没问题。 不过还是没理解了。。。
突然又想起来了Nfft=2^nextpow2(Nwid+Nwid-1);是不是应该该做Nfft=2^nextpow2(Nwid+Nchirp-1);
追答
Srw=fft(Srt,Nfft);
Srw1=fft(Srt1,Nfft);
运行到上面两句时可以暂停一下,看看 Srt中的样本数
K>> size(Srt)
ans =
1 3000
而fft长度设置:
K>> Nfft
Nfft =
8192
样本只有3000个,没必要做8192点的fft
而应该用4096比较合适....
K>> Nfft=2^nextpow2(3000)
Nfft =
4096
这一句不知为何?
Nfft=2^nextpow2(Nwid+Nwid-1);
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询