目录
语法
说明
示例
均值的变化
线性区的变化
矩阵数据
ischange函数的功能是查找数据中的突然变化。
语法
TF = ischange(A)
TF = ischange(A,method)
TF = ischange(___,dim)
TF = ischange(___,Name,Value)
[TF,S1] = ischange(___)
[TF,S1,S2] = ischange(___)
说明
TF = ischange(A) 返回一个逻辑数组,当 A 的对应元素的均值出现突然变化时,该逻辑数组的元素为逻辑值 1 (true)。
TF = ischange(A,method) 指定如何定义数据中的变化点。例如,ischange(A,'variance') 将计算 A 的元素方差的突然变化。
TF = ischange(___,dim) 为上述任一语法指定 A 的运算维度。例如,ischange(A,2) 计算矩阵 A 的每一行的变化点。
TF = ischange(___,Name,Value) 使用一个或多个名称-值参数指定用于计算变化点的其他参数。例如,ischange(A,'MaxNumChanges',m) 最多检测到 m 个变化点。
[TF,S1] = ischange(___) 还返回有关变化点之间的线段的信息。例如,[TF,S1] = ischange(A) 返回包含向量 A 的变化点之间的数据均值的向量 S1。
[TF,S1,S2] = ischange(___) 返回有关变化点之间的线段的其他信息。例如,[TF,S1,S2] = ischange(A) 返回包含每个线段均值的向量 S1 以及包含向量 A 的每个线段方差的向量 S2。
示例
均值的变化
创建一个由含噪数据组成的向量,并计算数据均值的突然变化。
A = [ones(1,5) 25*ones(1,5) 50*ones(1,5)] + rand(1,15);
TF = ischange(A)
TF = 1x15 logical array
0 0 0 0 0 1 0 0 0 0 1 0 0 0 0
要计算变化点之间数据的均值,请指定第二个输出参数。
[TF,S1] = ischange(A);
plot(A,'*')
hold on
stairs(S1)
legend('Data','Segment Mean','Location','NW')
如图所示:
线性区的变化
创建一个由含噪数据组成的向量,并计算数据的斜率和截距的突然变化。设置较大的检测阈值可减少由于噪声而检测到的变化点数。
A = [zeros(1,100) 1:100 99:-1:50 50*ones(1,250)] + 10*rand(1,500);
[TF,S1,S2] = ischange(A,'linear','Threshold',200);
segline = S1.*(1:500) + S2;
plot(1:500,A,1:500,segline)
legend('Data','Linear Regime')
如图所示:
除了提供阈值外,还可以指定要检测的最大变化点数。
[TF,S1,S2] = ischange(A,'linear','MaxNumChanges',3);
矩阵数据
计算矩阵每一行均值的突然变化。
A = diag(25*ones(5,1)) + rand(5,5)
A = 5×5
25.8147 0.0975 0.1576 0.1419 0.6557
0.9058 25.2785 0.9706 0.4218 0.0357
0.1270 0.5469 25.9572 0.9157 0.8491
0.9134 0.9575 0.4854 25.7922 0.9340
0.6324 0.9649 0.8003 0.9595 25.6787
TF = ischange(A,2)
TF = 5x5 logical array
0 1 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
0 0 0 0 1
参数说明
A-输入数据,指定为向量、矩阵、多维数组、表或时间表。
method
— 变化检测方法
更改检测方法,指定为下列值之一:
-
'mean' - 计算数据均值的突然变化。
-
'variance' - 计算数据方差的突然变化。
-
'linear' - 计算数据的斜率和截距的突然变化。
dim
— 运算维度
运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
以一个 m×n 输入矩阵 A 为例:
-
ischange(A,1) 基于 A 的每列中的数据检测变化点,并返回一个 m×n 矩阵。
-
ischange(A,2) 基于 A 的每行中的数据检测变化点,并返回一个 m×n 矩阵。
对于表或时间表输入数据,不支持 dim,并且分别对每个表或时间表变量进行运算。