说明:
(1)fft之前需要先把时域信号转化为0-T之间的信号,转化规则为DFS的时域周期延拓
matlab程序代码如下:
% initial matlab workspace
% figure3.2 page49
clc
clear
close all
% 设置B和TBP
B = 0.8;
TBP = 720; % 改成720运行一次; 改成100000运行一次
% 计算时间宽度T 和 斜率K
T = TBP/B;
K = B/T;
% 确定fs和dt
fs = 1.25*B;
dt = 1/fs;
Nt = ceil( T/dt );
% 注意将Nt转化为偶数
Nt = 2 * ceil(Nt/2);
% 因为Nt取整 所以要对fs和dt进行修正
dt = T/Nt;
fs = 1/dt;
% 时间序列t 和 对应的LFM信号
t = -T/2:dt:T/2-dt;
st = exp( 1i.*pi*K.*t.^2 );
% fft 傅里叶变换
nf = Nt;
sf = fftshift( fft( fftshift( st ), nf ) ) * dt;
% sf = fft( st, nf );
% 得到sf对应的频率
fre = (0:nf-1)*fs/nf - fs/2;
% check 1
% sf = exp(-1i.*pi.*fre.^2./K ).*( fre >=-B/2 & fre <=B./2);
% % check 2
% fre = linspace( -fs/2, fs/2, Nt );
% w = 2*pi*fre;
% sf = zeros( 1, length(w) );
% for ct = 1:length(t)
% sf = sf + st