【发布时间】:2016-02-21 05:27:44
【问题描述】:
我想对一组信号使用 pwelch,但我有一些问题。
首先,假设我们有 32 个持续时间为 30 秒的 (EEG) 信号。采样频率为fs=256samples/sec,因此每个信号的长度为 7680。我想使用pwelch 来估计这些信号的功率谱密度 (PSD)。
问题 1:
基于pwelch的documentation,
pxx = pwelch(x) 返回使用 Welch 的重叠段平均估计器找到的输入信号 x 的功率谱密度 (PSD) 估计值 pxx。当 x 是向量时,它被视为单个通道。当x为矩阵时,对每一列独立计算PSD并存储在pxx的对应列中。
但是,如果调用pwelch如下
% ch_signals: 7680x32; one channel signal per each column
[pxx,f] = pwelch(ch_signals);
生成的pxx 的大小为1025x1,而不是我所期望的1025x32,因为文档指出,如果 x 是矩阵,则 PSD 会为每一列独立计算并存储在 pxx 的相应列中.
问题 2:
假设我克服了这个问题,并且我独立地计算了每个信号的 PSD(通过将pwelch 应用于ch_signals 的每一列),我想知道这样做的最佳方法是什么。假设信号是一个 30 秒的信号,采样频率为 fs=256,我应该如何调用 pwelch(带有什么参数?)这样 PSD 才有意义?
问题 3:如果我需要将我的 32 个信号中的每一个拆分为多个窗口并将 pwech 应用于每个窗口,那么最好的方法是什么?假设我想将每个 30 秒的信号分成 3 秒的窗口,重叠 2 秒。我应该如何为每个窗口调用pwelch?
【问题讨论】:
-
该文档适用于 R2015 测试版,您的可能不是 R2015。例如我的是 R2012,当
x是一个矩阵时它什么也没说!pwelch(x,window)中的window不是你的意思吗? -
@Rashid 文档指的是最新版本,即 R2015b,其中 b 代表今年的第二个版本。该方案自 2006 年开始使用。
-
@Rashid,正确的,我在 Matlab R2014a 上,并且 - 确实 - 它没有说明这个案例。谢谢!所以,在这种情况下,我只是遍历通道,这完全没问题。我真正的问题是关于问题 2 和 3:在这些情况下我应该如何应用
pwelch(参数?)。特别是在第二种情况(Q3)中,信号需要事先在多个窗口中进行拆分。这里的窗口数量越大越好。非常感谢您的回复! -
感谢 cmets @Matt