我有多个信号,每个信号都以 300Hz 的采样率测量。它们大多是周期性的,尽管某些信号的某些部分似乎是随机的并且不遵循模式的其余部分(可能是噪声)。我想对这个信号进行下采样,我找到了这三个函数:decimate
、resample_poly
和resample
。
我对信号处理知之甚少,所以我想知道是否有人可以简单地解释这三个函数之间的区别是什么,如果可能的话,建议哪个最适合我的情况。
请注意,我想应用机器学习方法将新信号分类为 2 个类别。我需要下采样以减少对信号进行分类所需的时间。
我有多个信号,每个信号都以 300Hz 的采样率测量。它们大多是周期性的,尽管某些信号的某些部分似乎是随机的并且不遵循模式的其余部分(可能是噪声)。我想对这个信号进行下采样,我找到了这三个函数:decimate
、resample_poly
和resample
。
我对信号处理知之甚少,所以我想知道是否有人可以简单地解释这三个函数之间的区别是什么,如果可能的话,建议哪个最适合我的情况。
请注意,我想应用机器学习方法将新信号分类为 2 个类别。我需要下采样以减少对信号进行分类所需的时间。
下采样和上采样是改变信号采样率的操作。它们中的每一个都由两个步骤组成,改变采样率和过滤。通常,变化量以比率表示。
下采样时,我们试图将信号从一些带到一些。这样做的关键问题是我们有效地减少了可用带宽。因此,如果我们在重采样信号中保留任何频率,我们将得到混叠。
混叠是采样的副产品,它会扭曲原始信号。在 DSP 中,我们试图将其最小化。
因此,在进行下采样时,我们首先速率对信号应用低通滤波器。此滤波器抑制所有可能导致混叠的频率。应用过滤器后,我们应用抽取。抽取是一个非常简单的过程,我们通过它丢弃样本。例如,要通过进行下采样,您会丢弃所有其他样本(即保留 0、2、4、6、8、...)。
上采样时,我们试图将信号从一些带到一些。现在的关键问题不是我们无法将原始数据量适应新带宽,而是恰恰相反。我们现在没有足够的数据。
采样通过在离散时间检查连续信号的值来工作,特别次。但是,我们并不真正知道原始信号在我们正在检查其值的那些离散实例之间究竟做了什么。
因此,在进行上采样时,我们首先进行上采样,这是一种在样本之间插入静音的操作,然后应用插值来弥补静音位期间的信号值。插值通常是另一个低通滤波器。
显然,我们可以使用这两种操作将更改为任何给定的比率。但是,无论这个比例是多少,我们都是先上采样再下采样(每个上采样、下采样步骤由上面提到的自己的步骤组成)。否则,您将丢弃信息。
所以,说了这么多:
Decimate 进行下采样。
Resample使用傅里叶变换完全在频域中进行上采样/下采样和相关滤波。因为它使用傅立叶变换,所以一个关键假设是输入到其输入中的信号是周期性的。换句话说,如果您提供了“Blue is a co”这个词的录音,傅立叶变换假定在现实中,信号听起来像“Blue is a coBlue is a coBlue is a coBlue is a coBlue is a coBlue is a coBlue 是一个 co"... 到无穷大。这解释了该页末尾的注释。
Resample_poly使用多相滤波器进行上采样/下采样和相关过滤]( https://en.wikipedia.org/wiki/Polyphase_quadrature_filter )。(注意文档中提到的一系列操作)。
由于计算速度的原因,使用不同的技术,2 和 3 本质上是相同的。在提到的技术中,滤波和抽取以及上采样和内插是在一个步骤中执行的,因为它们是该技术所固有的。
如您所见,更改采样率涉及丢弃信息或“稀释”在某个信号在某个处采集期间已经捕获的信息。这就是为什么我问你在抽取之后你打算做什么,因为在某些条件下,如果那些将它们彼此区分开来的信号的微小特征被平滑掉,你的分类/聚类可能会受到影响。
正如您所提到的,如果您不可忽略的最高频率分量为 50Hz,这意味着(理论上)您可以将降低。在实践中,尽量不要太接近 100Hz 的最低。也许留一些余地,比如 120Hz。
希望这可以帮助。