什么更好:上采样还是下采样?
简而言之:
- 上采样:是否/不应该丢失信息(如果做得明智),那么更安全,
- 下采样:可能会丢失信息(如果不明智地进行),但计算 效率更高。
因此,如果您以不同的速率比较数据,并且在评估阶段尝试定义应该如何进行比较(比较哪些特征、使用什么指标、使用哪些外部因素,如精度、效率、稳健性等),那么非常基本的第一种方法是通过整数因子对两个信号进行上采样以协调它们的采样。在这里,这很好,6000 Hz 对两者都适用。
对于 DSP 实践,原因可能是:
- 使用整数上采样,您不必使用棘手的过滤技术,并且简单的线性插值很容易。请记住,上采样会增加一些信息。
- 如果信号具有相同的比例,您可以提取特征并比较它们:噪声、可变性、斜率、导数等。您可以应用正确的比例/偏移校正(它们没有相同的幅度),使用线性或非线性变换(傅立叶等)检查不同域中是否存在相似特征
- 在这个阶段,您应该能够对构建算法所需的特征/指标进行质量和量化。你可以估计你可以从这两个数据中得到什么。例如,您可以创建您的算法,看看它对信号下采样的鲁棒性如何,以及您可以走多远。在这里,您的算法开始变得更有效率。
一旦你花了一些时间,你就更愿意从头开始,决定是否应该下采样,使用哪种方法等,以达到安全和高效。
为了提供替代方案,如果您决定比较傅立叶域上的数据,您可以轻松地将具有不同长度和采样率的两个信号转换为相同数量的傅立叶系数,从而有助于在频域中进行比较。
如果您使用像 plot(x,y) 这样的函数,在同一个图表上显示它们的最简单方法是根本不重新采样它们中的任何一个,而只需用每个信号的适当值填充每个 x 向量,因此两者都出现在你想在显示器上。
如果需要,您还可以将绘图设置为具有两个不同的 x 轴(每条曲线一个),并带有不同的标签和图例。
现在,关于重采样。我将使用 Fs 作为采样频率。
采样信号不能包含高于 Fs/2 的频率分量。它是带宽限制的。
此外,仅包含频率为 F 的频率分量的信号可以以 2F 的采样率准确表示。
请注意,这种“准确”的表示是数学的,而不是视觉的。为了获得良好的视觉表现,每个周期有 5-10 个样本(因此没有明显高于 Fs/10 左右的频率分量)确实有助于大脑连接点。看这个图:同样的信号,下面的曲线有较低的采样率,没有信息丢失,因为频率低于Fs/2,但看起来还是很垃圾。
这是完全相同的信号。如果您使用 sinc 滤波器对底部的那个进行过采样(重建),您将得到顶部的那个。
抽取(下采样)会将所有高于新 Fs/2 的频率分量折返到信号中。这就是为什么我们通常在抽取器之前放置一个陡峭的低通滤波器。例如,要从 Fs=2000 Hz 下采样到 Fs=30 Hz,首先我们将应用一个截止频率略低于 15 Hz 的高阶低通,然后才进行抽取。
然而,这个滤波器会引入瞬态响应问题,在某些频率下会有相位滞后,并且可能会改变信号的视觉方面,如果你的想法是在视觉上比较它们,你不希望这样做。上面的规则适用,不要下采样太多,如果您希望信号形状有意义,请始终将 Fs 保持为感兴趣的最高频率的 5-10 倍。这就是为什么 200MHz 示波器需要以 1-2 Gsps 采样的原因。
我的问题是:下采样第二条曲线还是上采样第一条曲线更明智?
如上所述,最明智的做法是完全不要弄乱数据,只需在同一张图上用自己的 x 轴呈现它们。
在某些情况下需要进行采样率转换。例如,减少点数、减少内存使用、使其更快......或者让两个信号使用相同的“x”坐标来对它们执行计算。
在这种情况下,您还可以使用中间 Fs,对具有高 Fs 的信号进行下采样,并对具有低 Fs 的信号进行上采样。或者只是对具有高 Fs 的那个进行下采样。
请注意奈奎斯特标准,不要选择太低的采样率,否则您将失去高 Fs 信号的波形保真度,由于低通滤波器等原因,您会出现相移。或者如果您知道高频内容可以忽略不计,您可以做出明智的选择。一世
如果您使用线性插值来使“x”坐标匹配,请记住它还需要相当高的 Fs。插值适用于上图中的顶部信号,它不适用于底部的信号。如果您对最小值,最大值等感兴趣,则相同。
而且...请注意,过采样/上采样也会干扰瞬态响应,至少在视觉上是这样。例如,如果您对一个步骤进行过采样,由于 sinc 滤波器脉冲响应,您会得到很多振铃。这是因为您获得了一个带限信号,而带有方角的漂亮步骤实际上具有无限带宽。
我将以方波为例。想想原始的采样信号:0 0 0 1 1 1 0 0 0 1 1 1... 你的大脑看到一个方波。
但实际情况是,您应该将每个样本想象成一个点,而这些点之间没有任何内容。这是采样的重点。样本之间没有任何内容。因此,当这个方波使用 sinc 插值进行过采样时......看起来很有趣。
这只是带限方波的直观表示。摆动有点存在......或者可能不存在。无法知道它们是否存在于原始信号中。在这种情况下,解决方案是获取具有更高采样率的原始方波,以便在边缘获得更好的分辨率,理想情况下,您希望边缘上有多个样本,因此它看起来不再是无限带宽的一步。然后在对这样的信号进行过采样时,结果将不会出现视觉伪影。
反正。正如你所看到的......只是弄乱了x轴。这要简单得多。
下采样会丢失信息。当因子是整数时,上采样是无损的(假设你还记得因子),但是当因子不是整数时,一些信息会丢失。对于非常具体的重采样因子,从理论上讲,上采样可能比下采样丢失更多信息。
你应该使用哪一个?这取决于您需要的确定程度。
如果您不需要数学确定性而只需要启发式,则下采样更快,上采样更准确。
如果您需要限制计算的准确性:这是可能的,但我无法帮助您。
这取决于您所说的“比较”和“更明智”的含义。在 Matlab 中并不难的明智之举是双管齐下并自己决定。
实际上,如果您用两种方法的结果修改了您的问题,我会赞成您的问题,更多的人会发现它很有趣,并且很可能有助于弄清楚“比较”