我想比较两个信号或曲线。
不幸的是,它们具有不同的采样率。第一个以30 Hz采样,第二个以2000 Hz采样。Matlab具有“重新采样”功能,我认为,这将使比较容易得多。
我的问题是:对第二条曲线进行降采样还是对第一条曲线进行采样更明智?
编辑: 我按照我的指示做。左图中是原始曲线。右边的曲线被重新采样。右上角被上采样,右下角被下采样。
我想比较两个信号或曲线。
不幸的是,它们具有不同的采样率。第一个以30 Hz采样,第二个以2000 Hz采样。Matlab具有“重新采样”功能,我认为,这将使比较容易得多。
我的问题是:对第二条曲线进行降采样还是对第一条曲线进行采样更明智?
编辑: 我按照我的指示做。左图中是原始曲线。右边的曲线被重新采样。右上角被上采样,右下角被下采样。
Answers:
简而言之:
所以,如果你在不同速率的数据进行比较,并在评估阶段,当一个人试图定义如何比较应该做(这功能进行比较,用什么指标,用它的外部,如精密,高效,稳健性等),一最基本的第一种方法是通过整数因子对两个信号进行上采样以协调其采样。在这里,这是完全可以的,两者都可以工作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 0 1 1 1 ...您的大脑看到一个方波。
但现实情况是,您应该将每个样本都描绘成一个点,而点之间没有任何东西。这就是采样的重点。样本之间没有任何东西。因此,当使用Sinc插值对该方波进行过采样时,它看起来很有趣。
这只是带限方波的视觉表示。摆动有点存在...也许不存在。无法知道它们是否存在于原始信号中。在这种情况下,解决方案将是以更高的采样率获取原始方波,以在边缘上获得更好的分辨率,理想情况下,您希望在边缘上获得多个采样,这样它看起来就不再需要无限带宽了。然后,在对此类信号进行过采样时,结果将不会出现视觉伪影。
无论如何。如您所见...只是将x轴弄乱了。这要简单得多。
这取决于您所说的“比较”和“更明智”。明智的做法(在Matlab中并不难)是双向进行并自己决定。
实际上,如果您用两种方法的结果来修正您的问题,我都会赞成您的问题,更多的人会发现它很有趣,并且很可能会帮助您找出“比较”
我想指出在进行上采样时可能发生的问题,这可能对该操作至关重要。当信号被上采样并且数据端点远离零值时,就会发生边缘效应。在实践中,应消除这种不良影响。我与这个社区分享了一篇简短的文章,其中包含我所写的有关图像和代码的内容,可以帮助您理解。