Matlab fftshift 详解
一. 实信号情况
因为实信号以fs为采样速率的信号在fs/2 处混叠,所以实信号fft的结果中前半部分对应[0, fs/2],后半部分对应[ -fs/2, 0]
1)实信号fft的结果前半部分对应[0, fs/2]是正频率的结果,后半部分对应[ -fs/2, 0]是负频率的结果。大于fs/2的部分的频谱实际上是实信号的负频率加fs的结果。故要得到正确的结果,只需将视在频率减去fs即可得到频谱对应的真实负频率
2)如果要让实信号fft的结果与[-fs/2, fs/2]对应,则要fft后fftshift一下即可,fftshift 的操作是将fft结果以fs/2为中心左右互换
3)如果实信号fft的绘图频率f从[-fs/2, fs/2],并且没有fftshift,则fft正频谱对应f在[0, fs/2]的结果将混叠到(f - fs/2)的位置;
fft负频谱对应f在[-fs/2, 0]的结果混叠到f + fs - fs/2 的位置,注意这里f为负值,也就是说此种情况下fft负频谱对应的视在频率减去fs/2即可得到频谱对应的真实负频率
二. 复信号情况
1)复信号没有负频率,以fs为采样速率的信号,fft的频谱结果是从[0, fs]的。2)在f > fs/2 时,对复信号的fft结果进行fftshift会产生频率混叠(将下面的示例2中的频率从f=15改为f=85可以验证f=85的谱线在fftshift后跑到 f = -15 = 85 - fs = 85 - 100的位置了),所以复信号也一般要求f <= fs/2
3)在对雷达的慢时间维(复信号)进行fft后,由于要用doppler =
((0:LFFT-1)/LFFT - 0.5)*PRF; 计算多普勒频率,所以对该慢时间信号fft后要fftshift下,以便和正确的频率单元相对应。注意多普勒频率fd < = PRF/2 时才测的准!
fftshift