为什么周期图中有梳状的山丘?

信息处理 频率响应
2022-01-10 18:25:35

我正在玩periodogramMATLAB。我创建了一个简单的脚本来观察它的行为:

rng(1);  %# initialize the random number generator

Fs = 1000;  %# Sampling frequency
duration = 0.1; %# seconds

A = 1; %# Sinusoid amplitude
f = 150; %# Sinusoid frequency
eps = 0.01;

t = 0:1/Fs:duration;
x = A * sin(2*pi*f*t) + eps * randn(size(t));

periodogram(x,[],1024,Fs);

在此处输入图像描述

我对代码没有问题,可以使用文档中给出的算法编写自己的periodogram函数,但我想知道不是 150 Hz 的梳状山丘背后的理论原因。我能得到什么而不是得到超过 150 Hz 的单个尖峰?这些山峰的距离有什么特别之处吗?

2个回答

理论上,单个尖峰(如您所说)仅出现在无限长的正弦曲线上。由于您的信号长度为 100 个样本,因此它不是无限的。实际上,您将无限信号与一个窗口相乘,该窗口在 100 个样本上的值为 1,在其他地方为 0。由于时域中的乘法相当于频域中的卷积,因此您的频谱是单个尖峰和窗口频率响应的卷积(顺便说一句,它称为矩形窗口)。这就是你得到的功能。

我建议您阅读有关窗口的信息:http ://en.wikipedia.org/wiki/Window_function

我对 Itamar Katz 的回答并不完全满意,所以这是我的解释。

长度的复信号的 DFTNx[n]=eı2πfn/N

X[k]=F{x[n]}=eı2π(fk)1eı2π(fk)/N1

因此,功率或幅度平方响应由下式给出

|X[k]|2=(sin(π(fk))sin(π(fk)/N))2

如您所见,只要是整数,上述表达式就为零。您可以说服自己,分母仅在某一点为零,此时,取限制会为您提供的比率值。因此,没有任何时候表达会爆炸。fkN2

现在,当您获取上述表达式的对数时,(或者就此而言,在任何基础上),因此您在任何有零的地方都会得到空值。这就是在你的情节中导致“像山一样梳子”的原因。log10(0)

这是 Mathematica 中的一个简短说明:

Clear@X
X[f_, n_] := (Sin[π (f - #)]/Sin[π (f - #)/n])^2 &
Plot[X[3, 10][k], {k, -5, 5}, PlotRange -> All]

在此处输入图像描述

频率在 x 轴上,功率(线性)在 y 轴上。您可以看到零出现在整数值处,峰值出现在 3 处,这是我选择的频率。现在取,你会得到空值,这会产生梳状结构log10

在此处输入图像描述

这是另一个具有更大的示例,显示更多空值。N

在此处输入图像描述