主要内容

生理信号的小波分析

这个例子展示了如何使用小波分析生理信号。

生理信号通常是非平稳的,这意味着它们的频率内容会随着时间而变化。在许多应用中,这些变化就是感兴趣的事件。

小波将信号分解为时变频率(尺度)分量。因为信号特征通常在时间和频率上是局域化的,所以在使用稀疏(简化)表示时,分析和估计更容易。

这个例子给出了几个说明性的例子,其中小波提供信号的局部时频分析的能力是有益的。

MODWT在心电图中的R波检测

QRS复合体由心电图(ECG)波形中的三个偏转组成。QRS复合体反映了左右心室的去极化,是人类心电图最显著的特征。

加载并绘制一个心电波形,其中QRS复波的R峰已经被两个或多个心脏病学家注释。心电数据和注释取自MIT-BIH心律失常数据库。数据以360赫兹采样。

负载mit200ecgsig图绘制(tm)情节(tm(安),ecgsig(安)“罗”)包含(“秒”) ylabel (“振幅”)标题(“科目- MIT-BIH 200”)

图中包含一个axes对象。标题为Subject - MIT-BIH 200的axes对象包含2个类型为line的对象。

你可以使用小波来构建一个自动QRS检测器,用于R-R区间估计等应用。

使用小波作为通用特征检测器有两个关键:

  • 小波变换将信号成分分离到不同的频带,从而实现信号的稀疏表示。

  • 你通常可以找到一个小波,它与你试图检测的特征相似。

“sym4”小波类似于QRS复合体,这使得它成为QRS检测的一个很好的选择。为了更清楚地说明这一点,提取一个QRS复合体,并用扩展和翻译的“sym4”小波绘制结果以进行比较。

qrsEx = ecgsig (4560:4810);fb = dwtfilterbank (“小波”,“sym4”,“SignalLength”元素个数(qrsEx),“水平”3);ψ=小波(神奇动物);图绘制(qrsEx)图(2 * circshift(ψ(3:),-38年[0]),“r”)轴传奇(QRS波群的,“Sym4小波”)标题(“Sym4小波和QRS复合体的比较”)举行

图中包含一个axes对象。标题为“Sym4 Wavelet and QRS Complex Comparison of Sym4 Wavelet and QRS Complex”的坐标轴对象包含2个类型为line的对象。这些对象代表了QRS Complex, Sym4 Wavelet。

使用最大重叠离散小波变换(MODWT)增强心电波形中的R峰。MODWT是一种未模拟的小波变换,可以处理任意样本量。

首先,使用默认的“sym4”小波将心电波形分解到5级。然后,只使用4级和5级的小波系数重建心电波形的频域化版本。这些尺度对应于以下的近似频带。

  • 4 - [11.25, 22.5) Hz

  • 刻度5 - [5.625,11.25)Hz。

这涵盖了显示为QRS能量最大化的通带。

wt = modwt (ecgsig 5);wtrec = 0(大小(wt));wtrec (: 4:5) = wt (: 4:5);y = imodwt (wtrec,“sym4”);

使用由小波系数构建的信号近似的绝对值的平方,并使用寻峰算法来识别R峰。

如果您有信号处理工具箱™,您可以使用findpeaks来定位峰值。绘制小波变换得到的r峰波形,并标注自动检测到的峰值位置。

y = abs (y) ^ 2;(qrspeaks, loc) = findpeaks (y, tm,“MinPeakHeight”, 0.35,“MinPeakDistance”, 0.150);图绘制(tm, y)情节(loc qrspeaks,“罗”)包含(“秒”)标题(“用自动标注的小波变换本地化R峰”)

图中包含一个axes对象。标题为R Peaks localization by Wavelet Transform with Automatic Annotations的axes对象包含2个类型为line的对象。

在r峰波形中添加专家注释。如果在真实峰值的150毫秒内,自动峰值检测时间被认为是准确的( ± 7 5 msec)。

情节(tm(安),y(安)“k *’)标题(“专家注释小波变换定位R峰”)

图中包含一个axes对象。标题为R的peaks localizedby Wavelet Transform with Expert Annotations坐标轴对象包含3个类型为line的对象。

在命令行中,可以比较的值tm(安)loc,分别为专家时间和自动峰值检测时间。用小波变换增强R峰,命中率100%,无假阳性。使用小波变换计算出的心率为88.60次/分钟,而注释波形的心率为88.72次/分钟。

如果你试着处理原始数据的平方量级,你会发现小波变换隔离R峰的能力使检测问题更容易。处理原始数据可能会导致错误识别,比如当s波峰的平方超过r波峰在10.4秒左右时。

图绘制(tm、ecgsig“k——”)举行情节(tm, y,“r”,“线宽”, 1.5)情节(tm、abs (ecgsig)。^ 2,“b”)情节(tm(安),ecgsig(安)“罗”,“markerfacecolor”,[1 0 0])集(gca,“xlim”10.2[12])传说(“原始数据”,“小波重建”,原始数据的平方的,“位置”,“东南”)包含(“秒”)

图中包含一个axes对象。坐标轴对象包含4个line类型的对象。这些对象分别表示原始数据,小波重构,原始数据平方。

使用findpeaks对原始数据的平方量级的结果是12个假阳性。

(qrspeaks, loc) = findpeaks (tm ecgsig。^ 2,“MinPeakHeight”, 0.35,“MinPeakDistance”, 0.150);

心电图除了R峰极性的开关外,还经常受到噪声的破坏。

负载mit203ecgsig图绘制(tm)情节(tm(安),ecgsig(安)“罗”)包含(“秒”) ylabel (“振幅”)标题(“科目- MIT-BIH 203,带有专家注释”)

图中包含一个axes对象。标题为Subject - MIT-BIH 203 with Expert Annotations的axes对象包含2个类型为line的对象。

使用MODWT分离R峰。使用findpeaks确定峰值位置。绘制r峰波形与专家和自动注释。

wt = modwt (ecgsig 5);wtrec = 0(大小(wt));wtrec (: 4:5) = wt (: 4:5);y = imodwt (wtrec,“sym4”);y = abs (y) ^ 2;(qrspeaks, loc) = findpeaks (y, tm,“MinPeakHeight”, 0.1,“MinPeakDistance”, 0.150);图绘制(tm, y)标题(“由小波变换本地化的r波”)举行qrspeaks hwav =情节(loc,“罗”);hexp =情节(tm(安),y(安)“k *’);包含(“秒”)传说([hwav hexp),“自动”,“专家”,“位置”,“东北”)

图中包含一个axes对象。标题为R-Waves localization by Wavelet Transform的axis对象包含3个类型为line的对象。这些对象表示Automatic, Expert。

命中率再次100%,零虚警。

前面的例子使用了一个非常简单的小波QRS检测器,它基于构造自的信号近似modwt。的目标是证明小波变换隔离信号成分的能力,而不是构建最鲁棒的基于小波变换的QRS检测器。例如,利用小波变换提供信号的多尺度分析来增强峰值检测是有可能的。检查刻度为4和5的平方量级的小波细节,以及专家注释的R个峰值时间。4级的细节被移动以进行可视化。

ecgmra = modwtmra (wt);图绘制(toyota ecgmra(5:)。^ 2,“b”)举行情节(tm ecgmra(4:)。^ 2 + 0.6,“b”甘氨胆酸)组(,“xlim”,[14.3 25.5]) timemarks = repelem(tm(ann),2);N =元素个数(timemarks);markerlines =重塑(repmat ([0, 1], 1, N / 2), N, 1);h =茎(timemarks markerlines,“k——”);h.Marker =“没有”;集(gca),“ytick”[0.1 - 0.6]);集(gca),“yticklabels”, {“D5”,“D4”})包含(“秒”)标题(“Magnitude-Squared Level 4和5 Details”)

图中包含一个axes对象。标题为Magnitude-Squared Level 4和5 Details的axes对象包含3个类型为line、stem的对象。

你可以看到,第4级和第5级细节的峰值往往是同时出现的。一种更先进的小波寻峰算法可以利用这一点,同时使用来自多个尺度的信息。

脑动力学时变小波相干分析

傅立叶域相干性是一种完善的技术,用于测量两个平稳过程之间的线性相关性,作为频率的函数,范围从0到1。因为小波在时间和尺度(频率)上提供了关于数据的局部信息,基于小波的相干性允许你测量时变相关性作为频率的函数。换句话说,一种适合于非平稳过程的相干度量。

为了说明这一点,检查近红外光谱(NIRS)数据获得的两个人类受试者。近红外光谱通过利用含氧和脱氧血红蛋白的不同吸收特性来测量大脑活动。数据来自Cui, Bryant, & Reiss(2012),并由本例的作者善意地提供。对两名受试者来说,记录地点都是额叶上皮层。数据采样频率为10赫兹。

在实验中,被试在一个任务上交替地合作和竞争。任务的时间为7秒。

负载NIRSData图图(tm,[NIRSData(:,1) NIRSData(:,2)])图例(“主题1”,《主题2》,“位置”,“西北”)包含(“秒”)标题(“技术数据”网格)

图中包含一个axes对象。标题为NIRS Data的axes对象包含2个类型为line的对象。这些对象表示Subject 1, Subject 2。

检查时域数据,不清楚在单个时间序列中存在什么振荡,也不清楚两个数据集共有什么振荡。用小波分析来回答这两个问题。

类(NIRSData (: 1) 10,“撞”)

图中包含一个axes对象。标题为Magnitude Scalogram的坐标轴对象包含图像、直线、区域3个类型的对象。

图类(NIRSData(:, 2), 10日“撞”)

图中包含一个axes对象。标题为Magnitude Scalogram的坐标轴对象包含图像、直线、区域3个类型的对象。

CWT分析显示,两组数据集中在1 Hz附近均有较强的调频振荡。这是由于两名受试者的心脏周期。此外,在两组数据集中,在0.15 Hz附近似乎都有较弱的振荡。这种活动在受试者1中比受试者2中更强、更一致。小波相干性可以增强对两个时间序列中共同存在的弱振荡的检测。

[wcoh ~ F] = wcoherence (NIRSData (: 1), NIRSData (:, 2), 10);图冲浪(tm、F、abs (wcoh)。^ 2);视图(0,90)阴影插值函数hc = colorbar;hc.Label.String =“一致性”;标题(“小波相干”)包含(“秒”) ylabel (“赫兹”) ylim([0 2.5]) set(gca,“ytick”(0.15 - 1.2 2))

图中包含一个axes对象。标题为Wavelet Coherence的axis对象包含一个类型为surface的对象。

在小波相干性中,在0.15 Hz附近有很强的相关性。这是在实验任务对应的频带内,代表了两个被试大脑活动中与任务相关的相干振荡。在图中添加表示两个任务时间段的时间标记。两个任务之间的时间段是休息期。

Taskbd = [245 1702 2065 3474];tvec = repelem (tm (taskbd), 2);yvec = [0 max(F)]';yvec =重塑(repmat (yvec 1 4), 8日,1);持有stemPlot =茎(tvec yvec,“w——”,“线宽”2);stemPlot。标志=“没有”;

图中包含一个axes对象。标题为Wavelet Coherence的轴对象包含两个类型为surface、stem的对象。

这个示例使用获取并绘制单个NIRS时间序列的时频分析图。该示例还使用了wcoherence得到两个时间序列的小波相干性。使用小波相干性通常可以使你在两个时间序列中检测到相干振荡行为,这些行为在每个单独的序列中可能相当弱。请咨询Cui, Bryant, & Reiss(2012),以获得对该数据的更详细的小波相干分析。

基于CWT的耳声发射数据时频分析

耳声发射(OAEs)是由耳蜗(内耳)发出的窄带振荡信号,其存在表明听觉正常。加载并绘制一些OAE数据示例。数据在20 kHz采样。

负载dpoae图绘制(t。* 1000,dpoaets)包含(的毫秒) ylabel (“振幅”)

图中包含一个axes对象。坐标轴对象包含一个类型为line的对象。

发射是由一个从25毫秒开始到175毫秒结束的刺激引起的。根据实验参数,发射频率应为1230 Hz。获得并绘制CWT作为时间和频率的函数。使用默认的解析莫尔斯小波,每个八度有16个声音。使用助手函数helperCWTTimeFreqPlot来绘制CWT。helper函数和这个例子在同一个文件夹中。

[dpoaeCWT f] = cwt (dpoaets 2 e4,“VoicesPerOctave”16);helperCWTTimeFreqPlot (dpoaeCWT t。* 1000 f,“冲浪”,rocky探索的,的毫秒,“赫兹”)

图中包含一个axes对象。标题为CWT的OAE轴对象包含一个类型为surface的对象。

你可以通过找到频率最接近1230 Hz的CWT系数,并检查它们的大小作为时间的函数来研究OAE的时间演化。将震级与指示触发刺激的开始和结束的时间标记一起绘制出来。

[~, idx1230] = min (abs (f - 1230));cfsOAE = dpoaeCWT (idx1230:);情节(t。* 1000、abs (cfsOAE))甘氨胆酸AX =;情节(25 [25],[AX.YLim (1) AX.YLim (2)),“r”) plot([175 175],[AX.YLim(1) AX.YLim(2)],“r”)包含(“msec”)标题(rocky系数大小的)

图中包含一个axes对象。标题为CWT Coefficient Magnitudes的坐标轴对象包含3个类型为直线的对象。

唤醒刺激的开始和OAE之间有一定的延迟。一旦唤醒刺激终止,OAE的量级立即开始衰减。

另一种隔离发射的方法是使用逆CWT在时域内重建一个频域局域逼近。

通过提取1150 - 1350 Hz之间频率对应的CWT系数,构建一个频率局域发射近似。使用这些系数并对CWT求反。绘制原始数据与重建图以及指示唤起刺激的开始和结束的标记。

Frange = [1150 1350];xrec = icwt (dpoaeCWT, [], f,纤毛刷);图绘制(t。* 1000,dpoaets)xrec情节(t。* 1000年,“r”youdaoplaceholder0) AX = gca;ylimits = AX.YLim;ylimits情节(25 [25],“k”)情节(ylimits (175 175),“k”网格)包含(的毫秒) ylabel (“振幅”)标题(“发射的频率局部化重建”)

图中包含一个axes对象。标题为frequency - localization Reconstruction of Emission的坐标轴对象包含4个类型为line的对象。

在时域数据中,你可以清楚地看到,在触发刺激的应用和终止时,发射是如何逐渐启动和关闭的。

需要注意的是,即使为重建选择了一个频率范围,解析小波变换实际上编码了发射的确切频率。为了证明这一点,取从解析CWT重建的发射近似的傅里叶变换。

xdft = fft (xrec);频率= 0:2e4 /元素个数(xrec): 1 e4;xdft = xdft(1:元素个数(xrec) / 2 + 1);图绘制(频率、abs (xdft))包含(“赫兹”) ylabel (“级”)标题(“基于cw的信号逼近的傅里叶变换”)

图中包含一个axes对象。标题为傅立叶变换的cwbased Signal Approximation的axes对象包含一个类型为line的对象。

[~, maxidx] = max (abs (xdft));流('频率为%4.2f Hz\n'频率(maxidx))
频率为1230.00 Hz

这个示例使用获取OAE数据的时频分析和icwt获得信号的频率局域近似。

参考文献

Cui, X., Bryant, d.m.和Reiss。A.L.“基于nirs的超扫描揭示合作过程中额叶上皮层的人际一致性增加”,《神经影像》,59(3),2430-2437,2012。

Goldberger AL、Amaral LAN、Glass L、Hausdorff JM、Ivanov PCh、Mark RG、Mietus JE、Moody GB、Peng C-K、Stanley HE。《PhysioBank、PhysioToolkit和PhysioNet:复杂生理信号新研究资源的组成部分》。发行量101 (23):e215-e220, 2000年。http://circ.ahajournals.org/cgi/content/full/101/23/e215

Mallat, S。《信号处理的小波之旅:稀疏之路》,文献出版社,2009年。

喜怒无常、G.B.“评估心电图分析”。http://www.physionet.org/physiotools/wfdb/doc/wag-src/eval0.tex

Moody GB, Mark RG。“MIT-BIH心律失常数据库的影响。”IEEE Eng in Med and Biol 20(3):45-50(2001年5- 6月)。

Baidu
map