主要内容

findchangepts

找出信号的突然变化

描述

例子

ipt= findchangepts (x返回的平均值所在的索引x最重要的变化。

  • 如果x是一个向量N元素,然后findchangepts分区x分成两个区域,x (1: ipt-1)x (ipt: N),使每个区域相对于其局部均值的残差(平方)误差和最小。

  • 如果x是一个——- - - - - -N矩阵,然后findchangepts分区x分成两个区域,x (1: M, 1: ipt-1)ipt x (1: M: N),返回列索引,该列索引最小化每个区域与其本地的剩余误差之和维的意思。

例子

ipt= findchangepts (x名称,值使用名称-值对参数指定其他选项。选项包括要报告的变更点数目和要衡量的统计数字,而不是平均值。看到Changepoint检测为更多的信息。

例子

ipt剩余) = findchangepts (___还返回信号相对于已建模的更改的残余误差,包含任何以前的规范。

例子

findchangepts (___不带输出参数,绘制信号和任何检测到的更改点。看到“统计”为更多的信息。

例子

全部折叠

加载一个数据文件,其中包含以8192hz采样的火车汽笛的记录。找出信号的均方根水平变化最显著的10个点。

负载火车findchangepts (y,“MaxNumChanges”10“统计”“rms”

计算信号的短时功率谱密度。将信号分成128个样本段,每个样本段用一个汉明窗口。指定120个相邻段与128个DFT点之间的重叠样本。找出功率谱密度均值变化最显著的10个点。

[s f t pxx] =光谱图(y, 128120128 Fs);findchangepts (pow2db (pxx),“MaxNumChanges”, 10)

图中包含2个轴。axis 1包含131个类型为line的对象。总残差= 2820745.8453包含类型为image, line的11个对象。

重置随机数生成器以获得可重复的结果。产生随机信号,其中:

  • 平均值在七个区域中都是不变的,而在各个区域之间则会突然变化。

  • 5个区域的方差都是不变的,但各区域之间的方差却突然变化。

rng (“默认”) lr = 20;MNS = [0 1 4 -5 2 0 1];纳米长度= (mns);VRS = [1 4 6 1 3];nv =长度(工具);v = randn (lr *纳米* nv) / 2;f =重塑(repmat (mns、lr * nv 1), 1, lr *纳米* nv);y =重塑(repmat(工具与lr * nm, 1), 1, lr *纳米* nv);t = v * y + f;

绘制信号,突出其建设的步骤。

次要情节(2、2、1)情节(v)标题(“原始”700) xlim([0])次要情节(2 2 2)情节([f; v + f]”)标题(“手段”700) xlim([0])次要情节(2,2,3)情节([y, y v *]”)标题(“差异”xlim([0 700]) subplot(2,2,4) plot(t) title(“最后一次”700) xlim ([0])

图中包含4个轴。标题为Original的轴1包含一个类型为line的对象。包含两个类型为line的对象。带有标题差异的轴3包含两个类型为line的对象。标题为Final的轴4包含一个类型为line的对象。

找出信号均值变化最显著的五个点。

图findchangepts (t)“MaxNumChanges”5)

图中包含一个坐标轴。标题为changepoints Number = 5 Total residual error = 1989.3814的坐标轴包含3个line类型的对象。

找出信号均方根水平变化最显著的五个点。

findchangepts (t)“MaxNumChanges”5,“统计”“rms”

图中包含一个坐标轴。标题为changepoints Number = 5 Total log weighted dispersion = 871.1003的轴包含2个line类型的对象。

找出信号的均值和标准差变化最大的点。

findchangepts (t)“统计”“性病”

图中包含一个坐标轴。标题为changepoints Number = 1 Total log weighted dispersion = 1263.4625的轴包含3个line类型的对象。

加载采样的语音信号 F 年代 7 4 1 8 H z .该文件包含一段女性声音的录音,她说的是“MATLAB®”。

负载mtlb

辨别单词中的元音和辅音通过找出信号的显著变化点。将更改点的数量限制为5个。

numc = 5;(q, r) = findchangepts (mtlb,“统计”“rms”“MaxNumChanges”numc)
q =5×1132 778 1646 2500 3454
r = -4.4055 e + 03

绘制信号并显示变化点。

findchangepts (mtlb“统计”“rms”“MaxNumChanges”numc)

图中包含一个坐标轴。标题为changepoints Number = 5 Total log weighted dispersion = -4405.482的轴包含2个line类型的对象。

要在每个片段之后播放带有暂停的声音,取消注释以下行。

% soundsc(1:问(1),Fs)% for k = 1:length(q)-1% soundsc (mtlb (q (k): q (k + 1)), Fs)%暂停(1)%结束% soundsc (q(结束):长度(mtlb), Fs)

创建一个由两个不同振幅和线性趋势的正弦波组成的信号。

vc =罪(2 *π*(0:201)/ 17)。*罪(2 *π*(0:201)/ 19)。*...(√0:0.01:1 (1:-0.01:0)^ 2)+ (0:201)/ 401;

找出信号均值变化最显著的点。的“统计”在这种情况下,名称-值对是可选的。指定最小残差改进值为1。

findchangepts(风投,“统计”“的意思是”“MinThreshold”,1)

图中包含一个坐标轴。标题为“改变点数= 2”的轴总残差= 9.3939包含3个类型为line的对象。

找出信号的均方根水平变化最大的点。指定最小残差改进值为6。

findchangepts(风投,“统计”“rms”“MinThreshold”6)

图中包含一个坐标轴。标题为changepoints Number = 4 Total log weighted dispersion = -436.5368的轴包含2个line类型对象。

找出信号标准差变化最显著的点。指定最小残差改进值为10。

findchangepts(风投,“统计”“性病”“MinThreshold”, 10)

图中包含一个坐标轴。标题为changepoints Number = 26 Total log weighted dispersion = -1110.8065的轴包含3个line类型的对象。

找出信号的平均值和斜率变化最突然的点。指定最小残差改进值为0.6。

findchangepts(风投,“统计”“线性”“MinThreshold”, 0.6)

图中包含一个坐标轴。标题为changepoints Number = 3 Total residual error = 7.9824的轴包含3个line类型的对象。

生成带有20个随机控制点的二维、1000个样本Bézier曲线。Bézier曲线定义如下:

C t k 0 k t k 1 - t - k P k

在哪里 P k k th的 控制点, t 取值范围为0 ~ 1,和 k 是二项式系数。绘制曲线和控制点。

m = 20;P = randn (m, 2);t = linspace (0, 1, 1000) ';波尔= t。^ (0:m - 1) * (1 - t)。^ (m - 1: 1:0);本=伽马(m)。/γ(1:m)。/γ(m: 1:1);crv =本。*波尔* P;情节(crv (: 1), crv (:, 2), P (: 1), P (:, 2),”啊,“

图中包含一个坐标轴。轴线包含2个线型对象。

将曲线分成三段,使每段中的点离段均值的距离最小。

findchangepts (crv ',“MaxNumChanges”3)

图中包含2个轴。axis 1包含5个类型为line的对象。带有标题的坐标轴2变更点数= 2总残差= 158.2579包含3个类型为line的对象。

将曲线分成20段,用直线拟合最好。

findchangepts (crv ',“统计”“线性”“MaxNumChanges”19)

图中包含2个轴。axis 1包含5个类型为line的对象。带有标题的轴2变更点数= 19总残差= 0.090782包含21个类型为line的对象。

生成并绘制带有20个随机控制点的三维Bézier曲线。

P =兰德(m, 3);crv =本。*波尔* P;plot3 (crv (: 1), crv (:, 2), crv (:, 3), P (: 1), P (:, 2), P (:, 3),”啊,“)包含(“x”) ylabel (“y”

图中包含一个坐标轴。轴线包含2个线型对象。

从上面想象曲线。

视图([0 0 1])

图中包含一个坐标轴。轴线包含2个线型对象。

将曲线分成三段,使每段中的点离段均值的距离最小。

findchangepts (crv ',“MaxNumChanges”3)

图中包含2个轴。axis 1包含7个类型为line的对象。带有标题的轴2变更点数= 2总残差= 7.2855包含3个类型为line的对象。

将曲线分成20段,用直线拟合最好。

findchangepts (crv ',“统计”“线性”“MaxNumChanges”19)

图中包含2个轴。axis 1包含7个类型为line的对象。带有标题的轴2变更点数= 19总残差= 0.0075362包含21个类型为line的对象。

输入参数

全部折叠

输入信号,指定为实向量。

例子:重塑(randn (100 3) + (3 0 3), 1300)为均值有两次突变的随机信号。

例子:重塑(randn(100 3)。* 20 5] [1, 1300)为均方根水平上有两次突变的随机信号。

数据类型:|

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“MaxNumChanges”、3、“统计”,“rms”、“MinDistance”,20找到三个点,其中均方根水平的变化是最显著的,并且这些点被至少20个样本分开。

要返回的重要更改的最大数目,指定为逗号分隔的对,由“MaxNumChanges”和一个整数标量。找到变化最大的点后,findchangepts逐渐放宽其搜索标准,以包含更多的更改点而不超过指定的最大值。如果任何搜索设置的返回值大于最大值,那么函数将不返回任何值。如果“MaxNumChanges”,则函数返回更改最大的点。你不能指定“MinThreshold”“MaxNumChanges”同时进行。

例子:findchangepts ([0 1 0])返回第二个示例的索引。

例子:findchangepts ([0 1 0], ' MaxNumChanges ', 1)返回一个空矩阵。

例子:findchangepts ([0 1 0], ' MaxNumChanges ', 2)返回第二个和第三个点的索引。

数据类型:|

要检测的更改类型,指定为逗号分隔的对,由“统计”其中一个价值观是:

  • “的意思是”-检测均值的变化。如果你叫findchangepts在没有输出参数的情况下,函数绘制信号、变化点和由连续变化点包围的每个分段的平均值。

  • “rms”-检测均方根水平的变化。如果你叫findchangepts在没有输出参数的情况下,函数绘制信号和更改点。

  • “性病”-检测标准差的变化,使用高斯对数似然。如果你叫findchangepts在没有输出参数的情况下,函数绘制信号、变化点和由连续变化点包围的每个分段的平均值。

  • “线性”-检测平均值和斜率的变化。如果你叫findchangepts在没有输出参数的情况下,函数绘制信号、更改点和最适合由连续更改点包围的信号的每个部分的线。

例子:findchangepts([0 1 2 1],'Statistic','mean')返回第二个示例的索引。

例子:findchangepts([0 1 2 1],'统计','rms')返回第三个示例的索引。

更改点之间的最小样本数,指定为由逗号分隔的对组成“MinDistance”和一个整数标量。如果您没有指定这个数字,则平均值的变化默认为1,其他变化默认为2。

例子:findchangepts(罪(2 *π*(0:10)/ 5),‘MaxNumChanges’,5,MinDistance, 1)返回5个指标。

例子:findchangepts(罪(2 *π*(0:10)/ 5),‘MaxNumChanges’,5,“MinDistance”,3)返回两个指标。

例子:findchangepts(罪(2 *π*(0:10)/ 5),‘MaxNumChanges’,5‘MinDistance’,5)没有返回任何指数。

数据类型:|

每个变更点的总残差改进最小值,指定为由逗号分隔的对组成“MinThreshold”一个表示惩罚的实标量。这个选项通过对每个预期的变更点施加额外的惩罚来限制返回的重大变更的数量。你不能指定“MinThreshold”“MaxNumChanges”同时进行。

例子:findchangepts([0 1 2],“MinThreshold”,0)返回两个指标。

例子:findchangepts ([0 1 2], ' MinThreshold ', 1)返回一个索引。

例子:findchangepts ([0 1 2], ' MinThreshold ', 2)没有返回任何指数。

数据类型:|

输出参数

全部折叠

更改点位置,返回为整型索引向量。

信号相对于模型变化的残余误差,以向量的形式返回。

更多关于

全部折叠

Changepoint检测

一个changepoint是信号的某些统计性质突然发生变化的一个样本或时间瞬间。所讨论的属性可以是信号的均值、方差或光谱特征等。

为了找到一个信号变换点,findchangepts采用参数全局方法。功能:

  1. 选择一个点,将信号分成两部分。

  2. 为每个部分计算所需统计特性的经验估计。

  3. 在一个区域内的每个点上,测量有多少财产偏离了经验估计。添加所有点的偏差。

  4. 将偏差逐段相加,得到总残差。

  5. 改变分割点的位置,直到总残差达到最小值。

当选择的统计量是平均值时,这个过程最为清晰。在这种情况下,findchangepts使每个部分的“最佳”水平的总残差最小。给一个信号x1x2、……xN,以及子序列均值和方差

的意思是 x x n ] 1 n + 1 r n x r var x x n ] 1 n + 1 r n x r 的意思是 x x n ] 2 年代 x x | n n + 1

在哪里平方和

年代 x y | n r n x r 的意思是 x x n ] y r 的意思是 y y n ]

findchangepts发现k这样

J 1 k 1 x 的意思是 x 1 x k 1 ] 2 + k N x 的意思是 x k x N ] 2 k 1 var x 1 x k 1 ] + N k + 1 var x k x N ]

是最小的。这个结果可以推广到其他统计数据中去。findchangepts发现k这样

J k 1 k 1 Δ x χ x 1 x k 1 ] + k N Δ x χ x k x N ]

是最小的,给定的部分经验估计χ偏差测量Δ。

最小化残差等于最大化对数似然值。给出一个有均值的正态分布μ和方差σ2的对数可能性N独立观察

日志 1 N 1 2 π σ 2 e x μ 2 / 2 σ 2 N 2 日志 2 π + 日志 σ 2 1 2 σ 2 1 N x μ 2

  • 如果“统计”被指定为“的意思是”,方差是固定的,函数使用

    n Δ x χ x x n ] | n x 的意思是 x x n ] 2 n + 1 var x x n ]

    正如前面获得的。

  • 如果“统计”被指定为“性病”,均值固定,函数使用

    n Δ x χ x x n ] n + 1 日志 n σ 2 x x n ] n + 1 日志 1 n + 1 n x 的意思是 x x n ] 2 n + 1 日志 var x x n ]

  • 如果“统计”被指定为“rms”时,总偏差与时相同“性病”但当均值设为0时:

    n Δ x χ x x n ] n + 1 日志 1 n + 1 r n x r 2

  • 如果“统计”被指定为“线性”,该函数使用信号值与通过这些值的最小二乘线性拟合的预测之间的差的平方和作为总偏差。这个量也称为误差平方和,或上交所.最适合的直线通过xx+1、……xn

    x t 年代 x t | n 年代 t t | n t 的意思是 t t n ] + 的意思是 x x n ]

    上证综指是

    n Δ x χ x x n ] n x x t 2 年代 x x | n 年代 x t 2 | n 年代 t t | n n + 1 var x x n ] n x 的意思是 x x n ] 的意思是 + 1 n ] 2 n + 1 var + 1 n ]

感兴趣的信号通常有不止一个变化点。当改变点的数目已知时,推广这个过程是很简单的。当数目未知时,必须在残差中添加惩罚项,因为添加更改点总是会减少残差并导致过拟合。在极端情况下,每个点都成为变点,残差消失。findchangepts使用惩罚项,它随改变点的数量线性增长。如果有K更改点被发现,然后函数最小化

J K r 0 K 1 k r k r + 1 1 Δ x χ x k r x k r + 1 1 ] + β K

在哪里k0kK分别为信号的第一个样本和最后一个样本。

  • 比例常数,表示为β和指定的“MinThreshold”,对应于为每个更改点添加的固定惩罚。findchangepts如果残余误差的减少不满足阈值,则拒绝添加额外的更改点。集“MinThreshold”为0以返回所有可能的更改。

  • 如果您不知道要使用什么阈值,或者对信号中的变点数量有一个粗略的概念,请指定“MaxNumChanges”代替。该选项逐渐增加阈值,直到函数发现比指定值更少的更改。

为了实现最小化,findchangepts采用了一种基于动态规划的穷举算法。

参考文献

[1] kilick, Rebecca, Paul Fearnhead和Idris A. Eckley。"用线性计算成本对变化点进行最优检测"美国统计协会杂志.第107卷,第500期,2012年,第1590-1598页。

[2] Lavielle,马克。"用惩罚对比来解决改变点的问题"信号处理.85卷,2005年8月,第1501-1510页。

另请参阅

介绍了R2016a