DC 和 Nyquist 值高于所有其他 bin

信息处理 fft
2022-02-04 11:31:43

我正在使用平均中心信号并对其应用 fft,但是 dc 和 nyquist 值比所有其他值高很多。想知道我是否做错了什么或需要添加任何其他内容。第一个图像是信号,另一个是 fft 输出。

这是信号

这是fft输出

load Dog_1_interictal_segment_0001.mat

%interictal_segement is a struct with a 16 x 10000 matrix named data
data=interictal_segment_1.data;

%take first two seconds of the first eeg channel
data=data(1,1:10000);
freq=5000;
N=freq*2;
hz=linspace(0,freq/2,N);

averaged_mean=data-mean(data);
channel_frequency=abs(fft(averaged_mean)/N).^2;

figure(1)
plot(averaged_mean)

figure(2)
plot(hz,channel_frequency,'ko-','markerfacecolor','m','linew',1)
xlabel('Frequency (norm.)'), ylabel('Power');
2个回答

对于平均中心(去除直流,纯交流)信号,FFT 输出的第一个 bin 应该是精确的零。在您的图中,这个零输出样本可能会被图形显示的挤压所掩盖;即,如果您放大绘图的左侧,您应该看到零值的第一个 bin 样本......

此外,对于实际数据的典型 FFT 计算,FFT 箱的后半部分是前半部分(不包括 DC 和/或奈奎斯特箱)的共轭对称镜像。请注意,Nyquist bin 位于(大约)FFT 输出的中心,并且该 Nyquist bin 的右侧是镜像内容。另请注意,精确的奈奎斯特频率仓仅存在于偶数长度的 FFT,而不存在于奇数长度的 FFT。

查看您的输出,最后一个和第一个 bin 看起来像镜子;但正如我所指出的那样,这是错误的,你的第一个 FFT bin 必须为零,即使它不为零,它也不会镜像到最后一个 bin。镜像到最后一个 bin 实际上是 FFT 输出的第二个 bin。

首先,您所说的奈奎斯特实际上是低频分量,您绘制的是非移位 FFT,使用 Matlab 中的 fftshift 函数,您会发现图形的右侧将显示为从 DC 开始的负低频分量。基本上,真正的频谱只是从 1250 到 2500 的所有内容,左移 2500。

此外,由于您会使用 MATLAB 中的 randn 来模拟噪声,因此不能保证噪声 itslef 将为零均值。噪声的“预期值”是零均值,而不是特定的实现。因此,即使您已从信号中减去 DC,噪声仍将是非零均值,因此 DC bin 具有非零值。否则请粘贴代码,以进一步检查。