このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ischange
データの急激な変化の検出
構文
説明
は、名前と値の引数を 1 つ以上使用して、変化点を検出するための追加のパラメーターを指定します。たとえば、TF
= ischange(___,Name,Value
)ischange(A,'MaxNumChanges',m)
は m
個以下の変化点を検出します。
例
平均値の変化
ノイズを含むデータのベクトルを作成し、データの平均値の急激な変化を計算します。
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
変化点間のデータの平均値を計算するには、2 番目の出力引数を指定します。
[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
— 入力データ
ベクトル | 行列 | 多次元配列 | table | timetable
入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。
データ型: single
| double
| table
| timetable
method
— 変化検出メソッド
'mean'
(既定値) | 'variance'
| 'linear'
変化検出メソッド。次の値のいずれかとして指定します。
'mean'
— データの平均値の急激な変化を検出。'variance'
— データの分散の急激な変化を検出。'linear'
— データの勾配と切片の急激な変化を検出。
dim
— 操作次元
正の整数スカラー
操作次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。
m
行 n
列の入力行列 A
を考えます。
ischange(A,1)
は、A
の各列のデータに基づいて変化点を検出し、m
行n
列の行列を返します。ischange(A,2)
は、A
の各行のデータに基づいて変化点を検出し、m
行n
列の行列を返します。
入力データが table または timetable の場合、dim
はサポートされず、演算は各 table 変数または timetable 変数に沿って個別に行われます。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: TF = ischange(A,'MaxNumChanges',5)
SamplePoints
— サンプル点
ベクトル | table 変数名 | スカラー | 関数ハンドル | table vartype
添字
サンプル点。サンプル点のベクトル、または次の表のいずれかのオプション (入力データが table の場合) として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...]
です。
入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。
インデックス方式 | 例 |
---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
メモ
入力データが timetable
の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。
例: ischange([1 2 3 4 5 6],'linear','SamplePoints',[1 2 3 10 20 30])
例: ischange(T,'linear','SamplePoints',"Var1")
データ型: single
| double
| datetime
| duration
DataVariables
— 演算の対象とする table 変数
table 変数名 | スカラー | ベクトル | cell 配列 | パターン | 関数ハンドル | table vartype
添字
演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。DataVariables
の値は、入力 table 内の変化点を調べる変数を示します。指摘された変数に関連付けられるデータ型は double
または single
でなければなりません。
最初の出力 TF
には、DataVariables
で指定されていない変数については false
が格納されます。ただし、OutputFormat
の値が 'tabular'
の場合を除きます。
インデックス方式 | 例 |
---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
例: ischange(T,'DataVariables',["Var1" "Var2" "Var4"])
OutputFormat
— 出力データ型
'logical'
(既定値) | 'tabular'
出力データ型。次の値のいずれかとして指定します。
'logical'
— 入力データが table または timetable の場合、出力TF
を logical 配列として返します。'tabular'
— 入力データが table の場合、出力TF
を table として返します。入力データが timetable の場合、出力TF
を timetable として返します。
入力データがベクトル、行列、または多次元配列の場合、OutputFormat
はサポートされません。
例: ischange(T,'OutputFormat','tabular')
Threshold
— 変化点のしきい値
1 (既定値) | 非負のスカラー
変化点のしきい値。非負のスカラーとして指定します。このしきい値を 1 より大きい値にすると、変化点が少なくなります。
このしきい値は、検出する変化点の数を決定しますが、MaxNumChanges
が指定されている場合には指定できません。
MaxNumChanges
— 変化点の最大数
正の整数スカラー
検出する変化点の最大数。正の整数スカラーとして指定します。ischange
は指定した値以内の数の変化点を計算する自動しきい値を使用するため、MaxNumChanges
が指定されている場合は Threshold
を指定できません。
出力引数
TF
— 変化点インジケーター
ベクトル | 行列 | 多次元配列 | table | timetable
変化点インジケーター。ベクトル、行列、多次元配列、table または timetable として返されます。
TF
は、OutputFormat
の値が 'tabular'
の場合を除き、A
と同じサイズになります。OutputFormat
の値が 'tabular'
の場合、TF
は、指定された DataVariables
に対応する変数のみをもちます。
データ型: logical
S1
— 平均値または勾配
ベクトル | 行列 | 多次元配列 | table | timetable
変化点間のデータの平均値または勾配。ベクトル、行列、多次元配列、table、timetable のいずれかとして返されます。
変化点検出メソッドが
'mean'
または'variance'
の場合、S1
には各セグメントの平均値が含まれます。メソッドが
'linear'
の場合、S1
には各セグメントの勾配が含まれます。
S1
のデータ型は入力データと同じです。
データ型: double
| single
| table
| timetable
S2
— 分散または切片
ベクトル | 行列 | 多次元配列 | table | timetable
変化点間のデータの分散または切片。ベクトル、行列、多次元配列、table または timetable として返されます。
変化点検出メソッドが
'mean'
または'variance'
の場合、S2
には各セグメントの分散が含まれます。メソッドが
'linear'
の場合、S2
には各セグメントの切片が含まれます。
S2
のデータ型は入力データと同じです。
データ型: double
| single
| table
| timetable
詳細
変化点
データのベクトル A を、次の式を満たすように A1 と A2 の 2 つのセグメントに分割できる場合、このベクトルには変化点が含まれています。
は Threshold
パラメーターで指定されたしきい値で、C はコスト関数を表します。
たとえば、平均値の急激な変化を検出するコスト関数は です。ここで、N はベクトル x の要素数です。コスト関数は、セグメントが平均値によりどの程度近似されているかを測定します。
ischange
はコスト関数の合計を繰り返し最小化し、次の式を満たす変化点の数 k とその場所を判定します。
参照
[1] Killick R., P. Fearnhead, and I.A. Eckley. "Optimal detection of changepoints with a linear computational cost." Journal of the American Statistical Association. Vol. 107, Number 500, 2012, pp.1590-1598.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
名前と値の引数
OutputFormat
はサポートされていません。単精度入力の場合、生成コードの出力は MATLAB® の出力と一致しない場合があります。これは、
ischange
の生成コードがほとんどの中間計算を単精度で実行するためです。DataVariables
に重複した変数名が含まれていてはなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2017b で導入R2022a: logical 出力が含まれる table または timetable を返す
入力データが table または timetable の場合は、名前と値の引数 OutputFormat
を 'tabular'
に設定することにより、logical 配列の代わりに表形式の出力 TF
を返します。
R2021b: table 変数としてのサンプル点の指定
入力データが table の場合は、名前と値の引数 SamplePoints
を使用して、サンプル点を table 変数として指定します。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)