我有多个信号,每个信号的采样率均为300Hz。它们虽然大部分是周期性的,但是有些信号中有些部分似乎是随机的,并且不遵循其余模式(可能是噪声)。我想对该信号进行下采样,并且找到了以下三个函数:decimateresample_polyresample

我对信号处理了解不多,所以我想知道是否有人可以简单地解释一下什么是三个函数之间的区别,如果可能的话,建议最适合我的情况。

请注意,我想应用机器学习方法将新信号分类为2类。我需要下采样以减少对信号进行分类所需的时间。

评论

请问抽取后会发生什么?您打算使用哪种功能?这些信号要持续多久?

我正计划使用DTW作为距离指标进行k-NN分类。每个样本大约有18000个样本。我使用FFT测量了频率,似乎所有系数在大约50Hz后均为0

#1 楼

下采样和上采样是更改信号采样率的操作。其中每个步骤都由两个步骤组成,即更改采样率和滤波。通常,变化量用比率表示。

进行下采样时,我们试图将信号从某些$ Fs $传递到某些$ Fs_n \ frac {Fs_n} {2} $,我们将得到混叠。

混叠是采样的副产品,它会使原始信号失真。因此,在DSP中,我们试图将其最小化。

因此,在进行下采样时,我们首先以$ Fs $的速率对信号应用低通滤波器。该滤波器抑制所有可能导致混叠的频率。应用过滤器后,我们应用抽取。抽取是一个非常简单的过程,通过该过程我们可以丢弃样本。例如,要按$ \ frac {1} {2} $进行下采样,您将丢弃所有其他样本(即保留0、2、4、6、8,...)。

上采样时,我们试图将信号从某些$ Fs $传递到某些$ Fs_n> Fs $。现在的关键问题不是我们不能使原始数据量适应新带宽,而恰恰相反。现在我们没有足够的数据。

采样通过检查离散时间(尤其是每秒$ Fs $次)的连续信号的值来进行。但是,我们真的不知道原始信号在检查离散值之间的确切作用。

因此,在上采样时,我们首先进行上采样,这是一种插入静音的操作在采样之间,然后应用插值来组成静默位期间的信号值。插值通常是另一个低通滤波器。

显然,我们可以使用这两个操作以任何给定的比率更改$ Fs $。但是,无论这个比率是多少,我们都先上采样然后下采样(每个上采样,下采样步骤均由上述各自的步骤组成)。否则,您将丢弃信息。

这样说:


Decimate进行下采样。使用傅立叶变换在整个频域中进行滤波。因为它使用的是傅立叶变换,所以一个关键的假设是输入到其输入中的信号是周期性的。换句话说,如果您提供了“ Blue is a co”一词的录音,则傅立叶变换会假设实际上,信号听起来像“ Blue is a coBlue is coBlue是coBlue是coBlue是coBlue是coBlue是a coBlue是无限的。这就解释了该页末尾的注释。
Resample_poly使用多相滤波器进行上采样/下采样以及相关的滤波](https://en.wikipedia.org/wiki/Polyphase_quadrature_filter)。 (请注意文档中提到的一系列操作。)

2和3由于计算速度的原因,本质上是相同的东西,但使用了不同的技术。在提到的技术中,滤波,抽取,上采样和插值是一步之遥,因为它们是该技术固有的。

如您所见,更改采样率涉及丢弃信息或“稀释”。在以$ Fs $的价格获得的过程中,已经以某信号$ x $捕获的信息。这就是为什么我问你抽取后要做什么,因为在某些条件下,如果平滑了将它们彼此区分开的信号的那些微小特征,您的分类/聚类可能会受到影响。

就像您提到的那样,如果您的最高不可忽略的频率分量为50Hz,这意味着(理论上),您可以将$ Fs $减少$ \ frac {1} {3} $。实际上,请尽量不要太接近100Hz的最低$ Fs $。也许留下一些余地,例如120Hz。

希望这会有所帮助。

评论


$ \ begingroup $
详细的解释!如果我理解正确,我猜这里最安全的选择是Resample_poly,因为它不要求输入是周期性的。我的大部分时间都是周期性的,但是resample_poly可以正确处理。你同意我的结论吗?
$ \ endgroup $
– Andreas G.
17年11月28日在18:23

$ \ begingroup $
谢谢,如果您认为有帮助,可以通过左侧的控件进行投票和/或接受答案。鉴于您的评论中提到的内容,对此的答案可能是“是”,但是,我认为如果没有更多有关数据的知识,这将是不正确的。我想到的另一件事是您是否必须使用整个捕获的信号(?)。也许您可以将其拆分为重叠的窗口(?)。如果我要问的话,我们在谈论什么样的数据?
$ \ endgroup $
– A_A
17年11月28日在18:36

$ \ begingroup $
这是超声心动图。我考虑过只使用一部分信号,但是我不确定我可以将其拆分为重叠窗口的意思。你能详细说明吗?我已经考虑过要有一个滑动窗口,对于每个示例,请使用使该指标最大化的部分:stackoverflow.com/questions/47351483/…
$ \ endgroup $
– Andreas G.
17年11月28日在19:05



$ \ begingroup $
“滑动窗口”是一回事。您是否正在尝试检测心律不齐?
$ \ endgroup $
– A_A
17年11月28日在19:47

$ \ begingroup $
我实际上不确定我要检测的内容。我所知道的是,一个健康,而另一个则不健康。这是一种数据驱动的方法,其中为我提供了带有一些标签的数据,并且需要构建分类器。
$ \ endgroup $
– Andreas G.
17年11月28日在19:58