现象阐述
在看余弦函数做傅里叶变换的时候,发现假如不加fftshift,正轴上就会有两个频率:
close all; clear; clc;
fs = 300; %采样率大于200
t = 0:1/fs:1; %定义采样点
s = cos(2*pi*50*t); %采样后的信号序列
subplot(211);
%%figure
plot(t,s);
xlabel('t');
ylabel('幅度');
title('余弦函数');
%%figure
F1 = fft(s); %fft
f1 = linspace(0,fs,length(t)); %频谱横轴
subplot(212);
plot(f1,abs(F1));
xlabel('f');
ylabel('幅度');
title('余弦函数频谱');
结果如下
虽然实信号是双边带的,但是这里的频率都是正数。可能因为这样所以才会需要fftshift将另一半搬移到负频谱。
原因分析
之前看到一篇关于fftshift的文章 ,它里面的图用的很好,一下子启发到了我,在这里写一下我的理解
首先看(a)图的时域信号图,现实中根本不会有负时间,要想得到负时间上的频谱,可以通过时域采样,频域延拓的方式来得到。如(b)图的频谱图,负频率 -Fs/2 到 0 的频谱部分就正好被延拓到了正频率 Fs/2 到 Fs 的那部分了。
最后通过N点DFT,截取到的图,就是©中的频谱图。也就解释了一个正弦函数为什么在正轴上有2个正频率的原因。
一点自己的看法
针对上面的现象以及要用fftshift的原因,我看网上大都用混叠两字形容,我觉得这可能会难以理解,因为频率虽超过奈奎斯特采样频率,但是混频的现象却没发生。
参照论文 signal Processing for TDM MIMO FMCW Millimeter-Wave Radar Sensors中的一段原话:
我的理解是:中频信号fIF 在[ Fs /2 ,Fs ] 上的频谱 ,由于FIF高于奈奎斯特采样频率,所以要以别名(alias)的形式对应负频率fIF -FS 的频谱(或者是以别名的形式出现在负频率)
拓展:关于复信号
复信号是单边带的。复信号也会有负频率。
close all; clear; clc;
fs = 200; %采样率200
t = 0:1/fs:1; %定义采样点
s1 = exp(-1j*2*pi*50*t); %采样后的信号序列,信号频率为50
s2 = exp(1j*2*pi*50*t);
%%figure
subplot(221);
plot(t,s1);
xlabel('t');
ylabel('幅度');
title('exp(-1j*2*pi*50*t)');
%%figure
F1 = fft(s1); %fft
f1 = linspace(0,fs,length(t)); %频谱横轴
subplot(222);
plot(f1,abs(F1));
xlabel('f');
ylabel('幅度');
title('频谱');
%%figure
subplot(223);
plot(t,s2);
xlabel('t');
ylabel('幅度');
title('exp(1j*2*pi*50*t)');
%%figure
F2 = fft(s2); %fft
f2 = linspace(0,fs,length(t)); %频谱横轴
subplot(224);
plot(f2,abs(F2));
xlabel('f');
ylabel('幅度');
title('频谱');
当采样频率为200Hz,复指数信号频率为-50Hz时,其频谱却显示它频率为150Hz,原因可见上面原因分析部分。