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) は、前述のすべての構文で ANaN 値を含めるか省略するかを指定します。たとえば、detrend(A,"omitnan") はトレンドの計算時に NaN 値を無視します。既定では、detrendNaN 値を含めます。

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")

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 with xlabel t 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

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

  • "includemissing" または "includenan" — トレンドの計算時に ANaN 値を含めます。操作次元内のいずれかの要素が NaN の場合、D の対応する要素は NaN です。"includemissing""includenan" の動作は同じです。

  • "omitmissing" または "omitnan" — トレンドの計算時に ANaN 値を無視します。操作次元内のすべての要素が NaN の場合、D の対応する要素は NaN です。"omitmissing""omitnan" の動作は同じです。

名前と値の引数

引数のオプションのペアを 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 変数として指定できます。

インデックス方式

変数名:

  • string スカラーまたは文字ベクトル

  • "A" または 'A'A という名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [false false true] — 3 番目の変数

関数ハンドル:

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

  • @isnumeric — 数値を含んでいる 1 つの変数

変数の型:

  • 指定した型の 1 つの変数を選択する vartype 添字

  • vartype("numeric") — 数値を含んでいる 1 つの変数

メモ

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

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

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

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

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

インデックス方式

変数名:

  • string、文字ベクトル、または cell 配列

  • pattern オブジェクト

  • "A" または 'A'A という名前の変数

  • ["A","B"] または {'A','B'}A および B という名前の 2 つの変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号

  • 数値のベクトル

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [2 3] — table の 2 番目と 3 番目の変数

  • [false false true] — 3 番目の変数

関数ハンドル:

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

  • @isnumeric — 数値を含んでいるすべての変数

変数の型:

  • 指定した型の変数を選択する vartype 添字

  • 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 より前に導入

すべて展開する