为什么mne resample方法不对数据进行点对点采样?
Why does mne resample method does not sample the data point to point?
我对下采样的理解是,它是通过保留第一个样本,然后在第一个样本之后每隔n个样本来降低x的采样率的操作。
scipy 包的重采样方法提供的示例清楚地说明了此操作,如描述的图片可从 link (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.resample.html) 访问或提取如下
放大来看,可以看出原始数据点是逐点重采样的
但是,使用可通过 link 访问的下采样的 mne 示例
: https://mne.tools/dev/auto_examples/preprocessing/plot_resample.html
,我注意到数据点没有逐点重新采样,如下图所示
鉴于此,mne resample 基于 scipy 包的 resample 方法,如 mne resample 函数所示:
https://github.com/mne-tools/mne-python/blob/607fb4613fb5a80dd225132a4a53fe43b8fde0fb/mne/filter.py#L1342
请问这个问题是振铃问题还是其他问题?
此外,是否有缓解此问题的补救措施。
感谢您的任何见解。点赞
mne discussion repo 中提出了同样的问题,但截至撰写本文时尚未回答
My understanding of downsampling is that it is an operation to
decrease the sample rate of x by keeping the first sample and then
every nth sample after the first.
重采样通常包括两个步骤:低通滤波以避免混叠,然后降低采样率(从结果信号中选择样本)。低通实际上改变了值,因此过滤数据的子选择步骤不一定会产生“在”原始信号上的点。
May I know whether this issue is due to the ringing artifacts or due
to other problems?
在这种情况下,这可能是由于信号的频域重采样中的(隐式)低通滤波。这对我来说看起来很合理。如果你想尝试一下,你可以
- 直接对您的数据调用 scipy.signal.resample 并查看它的匹配程度。
- 填充你的信号,调用 scipy.signal.resample,然后删除(现在
减少长度)填充——这是 MNE 内部所做的。
- 直接对您的数据使用 scipy.signal.resample_poly。
- 手动低通滤波器,然后直接从低通信号中选择样本,这是 resample_poly 内部所做的。
此外,scipy.signal.resample
进行频域重采样,因此在下采样时隐式地使用 Nyquist 的砖墙滤波器(除非您为 window
参数指定一些内容,该参数应用于频率域以及有效的砖墙过滤器)。
p.s。提供的答案摘自与 mne 人员的讨论,即 Eric Larson、Brunner Clemens、Phillip Alday。应该给他们点赞
我对下采样的理解是,它是通过保留第一个样本,然后在第一个样本之后每隔n个样本来降低x的采样率的操作。 scipy 包的重采样方法提供的示例清楚地说明了此操作,如描述的图片可从 link (https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.resample.html) 访问或提取如下
放大来看,可以看出原始数据点是逐点重采样的
但是,使用可通过 link 访问的下采样的 mne 示例 : https://mne.tools/dev/auto_examples/preprocessing/plot_resample.html ,我注意到数据点没有逐点重新采样,如下图所示
鉴于此,mne resample 基于 scipy 包的 resample 方法,如 mne resample 函数所示: https://github.com/mne-tools/mne-python/blob/607fb4613fb5a80dd225132a4a53fe43b8fde0fb/mne/filter.py#L1342
请问这个问题是振铃问题还是其他问题?
此外,是否有缓解此问题的补救措施。
感谢您的任何见解。点赞
mne discussion repo 中提出了同样的问题,但截至撰写本文时尚未回答
My understanding of downsampling is that it is an operation to decrease the sample rate of x by keeping the first sample and then every nth sample after the first.
重采样通常包括两个步骤:低通滤波以避免混叠,然后降低采样率(从结果信号中选择样本)。低通实际上改变了值,因此过滤数据的子选择步骤不一定会产生“在”原始信号上的点。
May I know whether this issue is due to the ringing artifacts or due to other problems?
在这种情况下,这可能是由于信号的频域重采样中的(隐式)低通滤波。这对我来说看起来很合理。如果你想尝试一下,你可以
- 直接对您的数据调用 scipy.signal.resample 并查看它的匹配程度。
- 填充你的信号,调用 scipy.signal.resample,然后删除(现在 减少长度)填充——这是 MNE 内部所做的。
- 直接对您的数据使用 scipy.signal.resample_poly。
- 手动低通滤波器,然后直接从低通信号中选择样本,这是 resample_poly 内部所做的。
此外,scipy.signal.resample
进行频域重采样,因此在下采样时隐式地使用 Nyquist 的砖墙滤波器(除非您为 window
参数指定一些内容,该参数应用于频率域以及有效的砖墙过滤器)。
p.s。提供的答案摘自与 mne 人员的讨论,即 Eric Larson、Brunner Clemens、Phillip Alday。应该给他们点赞