主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

findchangepts

信号の急激な変化の検出

説明

ipt= findchangepts (xは,xの平均値が最も大幅に変化するインデックスを返します。

  • xがN個の要素を持つベクトルである場合,findchangeptsは,xを2つの領域x (1: ipt-1)x (ipt: N)に分割します。これらは,各領域の局所的な平均値からの残差(二)乗誤差の和を最小化します。

  • xがM行N列の行列である場合,findchangeptsは,xを2つの領域x (1: M, 1: ipt-1)ipt x (1: M: N)に分割し,各領域の局所的なM次元の平均値からの残差誤差の和を最小化する列インデックスを返します。

ipt= findchangepts (x名称,值は,名前と値のペアの引数を使用して追加オプションを指定します。オプションには,レポートする変化点の数や,平均値の代わりに測定する統計量があります。詳細については,変化点の検出を参照してください。

ipt剩余) = findchangepts (___は,前述のいずれかの指定を組み込んでモデル化された変化に対する信号の残差誤差も返します。

出力引数なしのfindchangepts (___は,信号および検出された任意の変化点をプロットします。詳細については,统计を参照してください。

すべて折りたたむ

8192赫兹でサンプリングされた列車の警笛の録音を含むファイルを読み込みます。信号の平方根平均二乗レベルが最も大きく変化する点を10個検出します。

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

信号の短時間パワースペクトル密度を計算します。信号を128サンプルのセグメントに分割し、各セグメントにハミング ウィンドウを適用します。隣り合ったセグメント間のオーバーラップを 120 サンプル、DFT 点を 128 に指定します。パワー スペクトル密度が最も大きく変化する点を 10 個検出します。

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

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

再現可能な結果が必要な場合は,乱数発生器をリセットします。次の条件でランダムな信号を生成します。

  • 平均値は7つの各領域内では一定だが,領域から領域にかけて急激に変化する。

  • 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的对象。

信号の平均値が最も大きく変化する点を5つ検出します。

图findchangepts (t)“MaxNumChanges”5)

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

信号の平方根平均二乗レベルが最も大きく変化する点を5つ検出します。

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)

可変振幅をもつ2つの正弦波と線形トレンドで構成される信号を作成します。

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のサンプルの2次元ベジエ曲線を生成します。ベジエ曲線は次のように定義されます。

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

ここで, P k 個の制御点の k 番目、 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个线型对象。

各セグメントの点とセグメントの平均値からの距離が最小になるように,曲線を3つのセグメントに分割します。

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のランダムな制御点を使用して,3次元ベジエ曲線を生成してプロットします。

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个线型对象。

各セグメントの点とセグメントの平均値からの距離が最小になるように,曲線を3つのセグメントに分割します。

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)は,平均値に2回の急激な変化を伴うランダムな信号です。

例:重塑(randn(100 3)。* 20 5] [1, 1300)は,平方根平均二乗レベルに2回の急激な変化を伴うランダムな信号です。

データ型:|

名前と値のペアの引数

オプションの引数名称,值のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:“MaxNumChanges”、3、“统计”,“rms”、“MinDistance”,20は,平方根平均二乗レベルの変化が最も大きく,かつ少なくとも20サンプルで隔てられている点を最大で3つ検出します。

返す大きな変化の最大的数。“MaxNumChanges”と整数スカラーで構成されるコンマ区切りのペアとして指定します。最も大きな変化のある点を検出した後,findchangeptsは,指定した最大値を超えない範囲でより多くの変化点を含めるために,徐々にその検索基準を緩和します。何らかの探索設定によってこの最大値を超えて返されている場合,それ以降,関数は何も返しません。“MaxNumChanges”が指定されていない場合,関数は最も大きな変化のある点を返します。“MinThreshold”“MaxNumChanges”を同時に指定することはできません。

例:findchangepts ([0 1 0])は2番目のサンプルのインデックスを返します。

例:findchangepts ([0 1 0], ' MaxNumChanges ', 1)は空行列を返します。

例:findchangepts ([0 1 0], ' MaxNumChanges ', 2)は2番目の点と3番目の点のインデックスを返します。

データ型:|

検出する変化のタイプ。“统计”と次の値のいずれかで構成されるコンマ区切りペアとして指定します。

  • “的意思是”——平均値の変化を検出。出力引数なしでfindchangeptsを呼び出すと,関数は,信号,変化点,連続変化点によって囲まれる各セグメントの平均値をプロットします。

  • “rms”——平方根平均二乗レベルの変化を検出。出力引数なしでfindchangeptsを呼び出すと,関数は信号および変化点をプロットします。

  • “性病”——ガウス対数尤度を使用して,標準偏差の変化を検出。出力引数なしでfindchangeptsを呼び出すと,関数は,信号,変化点,連続変化点によって囲まれる各セグメントの平均値をプロットします。

  • “线性”——平均値と勾配の変化を検出。出力引数なしでfindchangeptsを呼び出すと,関数は,信号,変化点,および連続変化点によって囲まれる信号の各部分に最適なラインをプロットします。

例:findchangepts([0 1 2 1],'Statistic','mean')は2番目のサンプルのインデックスを返します。

例:findchangepts([0 1 2 1],'统计','rms')は3番目のサンプルのインデックスを返します。

変化点間のサンプルの最小的数。“MinDistance”と整数スカラーで構成されるコンマ区切りのペアとして指定します。この数値を指定しない場合,既定の設定は,平均値の変化については1にその他の変化については2になります。

例:findchangepts(罪(2 *π*(0:10)/ 5),‘MaxNumChanges’,5,MinDistance, 1)は5インデックスを返します。

例:findchangepts(罪(2 *π*(0:10)/ 5),‘MaxNumChanges’,5,“MinDistance”,3)は2インデックスを返します。

例:findchangepts(罪(2 *π*(0:10)/ 5),‘MaxNumChanges’,5‘MinDistance’,5)はインデックスを返しません。

データ型:|

各変化点に対する残差誤差の合計の最小改善値。“MinThreshold”とペナルティを表す実数スカラーで構成されるコンマ区切りのペアとして指定します。このオプションは,予想される各変化点に追加のペナルティを適用することによって,返される大きな変化の数を制限するように作用します。“MinThreshold”“MaxNumChanges”を同時に指定することはできません。

例:findchangepts([0 1 2],“MinThreshold”,0)は2インデックスを返します。

例:findchangepts ([0 1 2], ' MinThreshold ', 1)は1インデックスを返します。

例:findchangepts ([0 1 2], ' MinThreshold ', 2)はインデックスを返しません。

データ型:|

出力引数

すべて折りたたむ

変化点の位置。整数インデックスのベクトルとして返されます。

モデル化された変化に対する信号の残差誤差。ベクトルとして返されます。

詳細

すべて折りたたむ

変化点の検出

"変化点"は,信号のなんらかの統計プロパティが突然変化するサンプルまたは時点です。対象プロパティは,信号の平均値,その分散,スペクトル特性などが考えられます。

信号の変化点を検出するために,findchangeptsはパラメトリックでグローバルな手法を採用します。関数は以下を実行します。

  1. 1点を選択し,信号を2つのセクションに分割します。

  2. 各セクションの目的の統計プロパティの経験的推定値を計算します。

  3. セクション内の各点で,このプロパティの経験的推定値との偏差を計測します。すべての点での偏差を足し合わせます。

  4. セクション間の偏差を足し合わせて,残差誤差の合計を求めます。

  5. 残差誤差の合計が最小になるまで,分割点の位置を変化させます。

この手続きは,選択した統計が平均値であるときに最もはっきりします。その場合,findchangeptsは各セクションの”ベストな“水平レベルからの残差誤差の合計を最小化します。信号x1, x2x、…Nおよび次の部分列の平均と分散が与えられたと仮定します。

的意思是 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は,

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

が最小となるようなkを求めます。結果は,一般化して他の統計を組み込むことができます。findchangeptsは,セクションの経験的推定χと偏差測定Δが与えられる場合,

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

が最小となるようなkを求めます。

残差誤差を最小化することは対数尤度を最大化することと等価です。平均値がμ,分散がσ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”に指定した場合,総偏差は“性病”と同じになりますが,平均値はゼロに設定されます。

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

  • “统计”“线性”として指定した場合,関数は,信号値とその値に近似する最小二乗線形予測の差の二乗和を合計偏差として使用します。この量は,"残差二乗和"または“SSE”と呼ばれます。x, xm + 1x、…nでの最適な近似線は次のとおりです。

    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”をゼロに設定します。

  • 使用されているしきい値がわからない場合,または信号の変化点数が大まかにしかわからない場合は,代わりに“MaxNumChanges”を指定します。このオプションは,関数が指定された値より少ない変化を検出するようになるまで,しきい値を徐々に増やします。

最小化そのものを実行するために,findchangeptsは,早い段階で放棄する動的プログラミングに基づく網羅的なアルゴリズムを使用します。

参照

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

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

参考

R2016aで導入