Main Content

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

detrend

多項式のトレンドを削除

説明

D = detrend(A) は、A のデータから最良近似直線を除去し、残りのデータを返します。

  • A がベクトルの場合、detrendA の要素からトレンドを減算。

  • A が行列の場合、detrend は各列を個別に処理し、A の対応する列から各トレンドを減算。

  • A が多次元配列の場合、detrend はすべての次元にわたって列方向に処理し、A の対応する列から各トレンドを減算。

  • A が、single 型または double 型の数値変数をもつ table または timetable の場合、detrendA の各変数につき別々に演算し、A の対応する変数から各トレンドを減算。

D = detrend(A,n) は、n 次多項式トレンドを除去します。たとえば、n = 0 の場合、detrendA から平均値を除去します。n = 1 の場合、detrend は線形トレンドを除去し、これは前述の構文と等価です。n = 2 の場合、detrend はニ次トレンドを除去します。

D = detrend(A,n,bp) は、ベクトル bp で指定されたブレークポイントで定義されたセグメントでの連続の区分的トレンドを除去します。

D = detrend(___,nanflag) は、前述の任意の構文における NaN 値の処理方法を指定します。たとえば、detrend(A,"omitnan") は、トレンドを計算する前に NaN 値を削除しますが、detrend(A,"includenan") にはそれらが含まれます (既定)。

D = detrend(___,Name,Value) は、1 つ以上の名前と値の引数を使用して追加のパラメーターを指定します。たとえば、detrend(A,1,bp,"Continuous",false) は近似トレンドに不連続点があってもよいことを指定します。

すべて折りたたむ

データのベクトルを作成し、連続の線形トレンドを除去します。元のデータ、トレンド除去後のデータ、および線形トレンドをプロットします。

t = 0:20;
A = 3*sin(t) + t;
D = detrend(A);

plot(t,A)
hold on
plot(t,D)
plot(t,A-D,":k")
legend("Input Data","Detrended Data","Trend","Location","northwest")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Input Data, Detrended Data, Trend.

データのベクトルを作成し、table 内の指定した変数から連続の二次トレンドを除去します。元のデータ、トレンド除去後のデータ、およびトレンドをプロットします。

t = (-4:4)';
trend = (t.^2 + 4*t + 3);
sig = [0 1 -2 1 0 1 -2 1 0]';
x = sig + trend;
T = table(t,trend,sig,x);
T = detrend(T,2,"DataVariables","x","SamplePoints","t","ReplaceValues",false)
T=9×5 table
    t     trend    sig    x     x_detrended
    __    _____    ___    __    ___________

    -4      3       0      3     -0.12121  
    -3      0       1      1       0.9697  
    -2     -1      -2     -3      -1.9654  
    -1      0       1      1       1.0736  
     0      3       0      3      0.08658  
     1      8       1      9       1.0736  
     2     15      -2     13      -1.9654  
     3     24       1     25       0.9697  
     4     35       0     35     -0.12121  

plot(T,"t","x")
hold on
plot(T,"t","x_detrended")
plot(T.t,T.x-T.x_detrended,":k")
legend("Input Data","Detrended Data","Trend","Location","northwest")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Input Data, Detrended Data, Trend.

データのベクトルを作成し、ブレークポイント 0 を使用して区分的線形トレンドを除去します。結果の出力が不連続であってもよいことを指定します。元のデータ、トレンド除去後のデータ、およびトレンドをプロットします。

t = -10:10;
A = t.^3 + 6*t.^2 + 4*t + 3;
bp = 0;
D = detrend(A,1,bp,"SamplePoints",t,"Continuous",false);

plot(t,A)
hold on
plot(t,D)
plot(t,A-D,":k")
legend("Input Data","Detrended Data","Trend","Location","northwest")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Input Data, Detrended Data, Trend.

入力引数

すべて折りたたむ

入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。

  • A がベクトルの場合、detrendA の要素からトレンドを減算。

  • A が行列の場合、detrend は各列を個別に処理し、A の対応する列から各トレンドを減算。

  • A が多次元配列の場合、detrend はすべての次元にわたって列方向に処理し、A の対応する列から各トレンドを減算。

  • A が、single 型または double 型の数値変数をもつ table または timetable の場合、detrendA の各変数につき別々に演算し、A の対応する変数から各トレンドを減算。

データ型: double | single
複素数のサポート: あり

多項式の次数。非負の整数スカラーとして、あるいは "constant" (0 と等価) または "linear" (1 と等価) として指定します。

データの区分的セグメントを定義するブレークポイント。次のいずれかを含むベクトルとして指定します。

  • ブレークポイントの位置を示すサンプル点の値。サンプル点の値は、既定のサンプル点ベクトル [1 2 3 ...]、または名前と値の引数 SamplePoints で指定されるサンプル点ベクトルに格納されます。

  • logical 値。ここで、logical 1 (true) は、入力データの対応する要素にブレークポイントがあることを示します。bp が logical 値を含む場合、サンプル点と同じ長さでなければなりません。

ブレークポイントは、データのセグメントごとに別々のトレンドを計算する場合に便利です。

データ型: double | single | datetime | duration | logical

NaN の条件。次の値のいずれかとして指定します。

  • "includenan" — トレンドを計算するときに、入力データに NaN 値を含めます。

  • "omitnan" — トレンドを計算するときに、入力データの NaN 値をすべて無視します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

例: D = detrend(A,SamplePoints=1:10:1000)

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: D = detrend(A,"SamplePoints",1:10:1000)

連続性の制約。次の値のいずれかとして指定します。

  • true — 近似トレンドはすべての位置で連続でなければなりません。

  • false — 近似トレンドは不連続点を含むことができます。

サンプル点。サンプル点のベクトル、または次の表のいずれかのオプション (入力データが table の場合) として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...] です。

入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。

table 入力のオプション説明
変数名

単一の table 変数名を指定する文字ベクトルまたはスカラー string

'Var1'

"Var1"

変数インデックスのスカラー

table 変数のインデックスのスカラー

3

logical ベクトル

各要素が table 変数に対応する logical ベクトル (対応する変数をサンプル点として指定する場合は true、その他の要素はすべて false)

[true false false]

関数ハンドル

入力として table 変数をとり、1 つの table 変数のみを true とする logical スカラーを返す関数ハンドル

@isnumeric

vartype 添字

1 つの変数のみに対して添字を返す関数 vartype によって生成される table の添字

vartype('numeric')

メモ

入力データが timetable の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。

例: detrend(A,"SamplePoints",0:0.1:10)

データ型: double | single | datetime | duration

演算の対象とする table または timetable 変数。次の表のオプションのいずれかとして指定します。DataVariables の値は、入力 table または timetable 内のどの変数で多項式トレンドを削除するかを示します。

この table または timetable の他の変数のうち、DataVariables で指定されていない変数は、標準化されずに出力に渡されます。

オプション説明
変数名

単一の table 変数名を指定する文字ベクトルまたは string スカラー

'Var1'

"Var1"

変数名のベクトル

各要素が table 変数名である、文字ベクトルの cell 配列または string 配列

{'Var1' 'Var2'}

["Var1" "Var2"]

変数インデックスのスカラーまたはベクトル

table 変数インデックスのスカラーまたはベクトル

1

[1 3 5]

logical ベクトル

各要素が table 変数に対応する logical ベクトル。true の場合は対応する変数を含めて、false の場合は対応する変数を除外します。

[true false true]

関数ハンドル

入力として table 変数をとり、logical スカラーを返す関数ハンドル

@isnumeric

vartype 添字

関数 vartype によって生成される table の添字

vartype("numeric")

入力データがベクトル、行列、または多次元配列の場合、DataVariables はサポートされません。

例: detrend(A,"DataVariables",["Var1" "Var2" "Var4"])

値置換インジケーター。A が table または timetable の場合に、次の値のいずれかとして指定します。

  • true または 1 — 入力 table 変数を、トレンド除去されたデータを含む table 変数に置き換えます。

  • false または 0 — 入力 table 変数に、トレンド除去されたデータを含む table 変数を追加します。

入力データがベクトル、行列、または多次元配列の場合、ReplaceValues はサポートされません。

例: detrend(A,"ReplaceValues",false)

ヒント

  • 関数 detrend は、データから平均値または (最小二乗の意味での) 最適な近似線を差し引きます。データが表形式であるか、複数のデータ列があるか、table または timetable である場合、detrend は各データ列を個別に処理します。

    データからトレンドを取り除くことにより、トレンド周りのデータ内の変動に解析の焦点を当てることができます。線形トレンドは、一般的にデータの体系的な増減を示します。たとえば、センサー ドリフトによりシステマティック シフトが発生することがあります。トレンドが意味をもつこともありますが、解析の種類によっては、トレンドを取り除いた方がすぐれた洞察が得られます。

    多くの場合、データのトレンドの影響を除去することに意味があるかどうかは、解析の目的によって異なります。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する