Main Content

movvar

説明

M = movvar(A,k) は局所 k 点における分散値の配列を返します。各分散値は、長さ k のスライディング ウィンドウにわたる A の隣接要素から計算されます。k が奇数である場合、ウィンドウは現在位置にある要素を中心にして配置されます。k が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。ウィンドウを埋めるのに十分な数の要素がない場合、ウィンドウ サイズは自動的に端点で打ち切られます。ウィンドウが打ち切られた場合、分散値はウィンドウを埋めている要素のみから取得されます。MA と同じサイズです。

  • A がベクトルである場合、movvar はベクトル A の長さに沿って演算します。

  • A が多次元配列の場合、movvar は、サイズが 1 に等しくない A の最初の次元に沿って演算します。

M = movvar(A,[kb kf]) は長さが kb+kf+1 のウィンドウにおける分散値を計算します。このウィンドウには現在位置の要素、kb 個前までの要素、kf 個後までの要素が含まれます。

M = movvar(___,w) は、前述の任意の構文について正規化係数を指定します。w = 0 (既定値) の場合、M はウィンドウの長さが k のときに k-1 で正規化されます。w = 1 の場合、Mk で正規化されます。

M = movvar(___,w,dim) は、前述の任意の構文について、演算の対象とする A の次元を指定します。dim を指定する場合は、常に前述の構文の重み w を指定します。たとえば、A が行列である場合、movvar(A,k,0,2)A の列に沿って動作し、各行の k 個の要素の移動分散値を計算します。正規化係数は既定値 k-1 です。

M = movvar(___,nanflag) は、ANaN 値を含めるか省略するかを指定します。たとえば、movvar(A,k,"omitnan") は各分散値の計算時に NaN 値を無視します。既定では、movvarNaN 値を含めます。

M = movvar(___,Name,Value) は、名前と値のペアの引数を 1 つ以上使用して分散値に追加のパラメーターを指定します。たとえば、x が時間値のベクトルである場合、movvar(A,k,"SamplePoints",x)x の時間を基準とする移動分散値を計算します。

すべて折りたたむ

行ベクトルの 3 点の中心移動分散値を計算します。端点でウィンドウ内の要素数が 3 より少ない場合、使用可能な要素の分散値を取得します。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movvar(A,3)
M = 1×10

    8.0000    4.0000   22.3333   19.0000    1.0000    1.0000    9.3333    7.0000    1.0000    0.5000

行ベクトルの 3 点の末尾移動分散値を計算します。端点でウィンドウ内の要素数が 3 より少ない場合、使用可能な要素の分散値を取得します。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movvar(A,[2 0])
M = 1×10

         0    8.0000    4.0000   22.3333   19.0000    1.0000    1.0000    9.3333    7.0000    1.0000

行ベクトルの 3 点の中心移動分散値を計算し、個々の分散値をウィンドウ内の要素数で正規化します。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movvar(A,3,1)
M = 1×10

    4.0000    2.6667   14.8889   12.6667    0.6667    0.6667    6.2222    4.6667    0.6667    0.2500

行列の各行に対して 3 点の中心移動分散値を計算します。ウィンドウは最初の行で始まり、行の終わりまで横方向にスライドし、それから 2 行目に移動して同様に繰り返します。次元引数は 2 であるため、ウィンドウは A の列を横断する方向にスライドします。次元を指定する場合は常に正規化係数を指定します。

A = [4 8 6; -1 -2 -3; -1 3 4];
M = movvar(A,3,0,2)
M = 3×3

    8.0000    4.0000    2.0000
    0.5000    1.0000    0.5000
    8.0000    7.0000    0.5000

NaN 値が含まれた行ベクトルを作成します。

A = [4 8 NaN -1 -2 -3 NaN 3 4 5];

NaN 値を除外して、ベクトルの 3 点の中心移動分散値を計算します。NaN 値が含まれているウィンドウでは、movvarNaN 以外の要素で計算します。

M = movvar(A,3,"omitnan")
M = 1×10

    8.0000    8.0000   40.5000    0.5000    1.0000    0.5000   18.0000    0.5000    1.0000    0.5000

時間ベクトル t に従って、A のデータの 3 時間中心移動分散値を計算します。

A = [4 8 6 -1 -2 -3];
k = hours(3);
t = datetime(2016,1,1,0,0,0) + hours(0:5)
t = 1x6 datetime
   01-Jan-2016 00:00:00   01-Jan-2016 01:00:00   01-Jan-2016 02:00:00   01-Jan-2016 03:00:00   01-Jan-2016 04:00:00   01-Jan-2016 05:00:00

M = movvar(A,k,"SamplePoints",t)
M = 1×6

    8.0000    4.0000   22.3333   19.0000    1.0000    0.5000

行ベクトルの 3 点の中心移動分散値を計算しますが、使用する要素が 3 点より少ない計算を出力から破棄します。言い換えれば、3 要素をすべて含むウィンドウから計算された分散値のみを返し、端点での計算を破棄します。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movvar(A,3,"Endpoints","discard")
M = 1×8

    4.0000   22.3333   19.0000    1.0000    1.0000    9.3333    7.0000    1.0000

入力引数

すべて折りたたむ

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

データ型: single | double | logical

ウィンドウの長さ。数値または duration スカラーとして指定します。k が正の整数値スカラーである場合、中心分散値には現在位置の要素とその周囲の要素が含まれます。

たとえば、movvar(A,3) は局所 3 点における分散値の配列を計算します。

movvar(A,3) computation. The elements in the sample window are 1, 3, and 5, so the resulting local variance is 4.

方向指定ウィンドウの長さ。2 つの要素を含む数値または duration 行ベクトルとして指定します。kbkf が正の整数値スカラーの場合、計算は kb+kf+1 個の要素に対して行われます。この計算には、現在位置にある要素、その前にある kb 個の要素、その後にある kf 個の要素が含まれます。

たとえば、movvar(A,[2 1]) は局所 4 点における分散値の配列を計算します。

movvar(A,[2 1]) computation. The elements in the sample window are 4, 1, 3, and 5, so the resulting local variance is 2.92.

重み。次のいずれかの値に指定します。

  • 0k-1 で正規化されます (k はウィンドウの長さ)。k=1 の場合、重みは k です。

  • 1k で正規化されます。

データ型: single | double

演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 より大きい最初の配列次元です。

次元 dimmovvar が沿って動作する次元、つまり指定されたウィンドウがスライドする方向を示します。

mn 列の入力行列 A を考えます。

  • movvar(A,k,0,1) は、A の各列について k 要素の移動分散値を計算し、mn 列の行列を返します。

    movvar(A,k,0,1) column-wise operation

  • movvar(A,k,0,2) は、A の各行について k 要素の移動分散値を計算し、mn 列の行列を返します。

    movvar(A,k,0,2) row-wise operation

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

  • "includemissing" または "includenan" — 各分散値の計算時に ANaN 値を含めます。ウィンドウ内のいずれかの要素が NaN の場合、M の対応する要素は NaN です。"includemissing""includenan" の動作は同じです。

  • "omitmissing" または "omitnan"ANaN 値を無視し、点の数を減らして各分散値を計算します。ウィンドウ内のすべての要素が NaN の場合、M の対応する要素は NaN です。"omitmissing""omitnan" の動作は同じです。

名前と値の引数

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

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

例: M = movvar(A,k,"Endpoints","fill")

端点付近のウィンドウの処理方法。次のオプションのいずれかとして指定します。

説明
"shrink"入力の端点付近のウィンドウのサイズを縮小し、既存の要素のみを含めます。
"discard"既存の要素とウィンドウが完全にオーバーラップしない場合、分散値を出力しません。
"fill"存在しない要素を NaN に置き換えます。
数値または logical スカラー存在しない要素を指定した数値または論理値に置き換えます。

分散値を計算するためのサンプル点。ベクトルとして指定します。サンプル点は A のデータの位置を表します。サンプル点は等間隔でサンプリングされている必要はありません。既定では、サンプル点ベクトルは [1 2 3 ... ] です。

移動ウィンドウはサンプル点を基準として定義されます。サンプル点は並べ替えられていなければならず、また一意の要素を含んでいなければなりません。たとえば、t が入力データに対応する時間のベクトルである場合、movvar(rand(1,10),3,"SamplePoints",t) には t(i)-1.5 から t(i)+1.5 までの時間間隔を表すウィンドウがあります。

サンプル点ベクトルのデータ型が datetime または duration である場合、移動ウィンドウの長さの型は duration でなければなりません。

サンプル点の間隔が不均一で、Endpoints を指定する場合、その値は "shrink" でなければなりません。

詳細

すべて折りたたむ

分散

N 個のスカラー観測値からなる有限長ベクトル A の分散は、次のように定義されます。

V=1N1i=1N|Aiμ|2

ここで、μ は A の平均です。

μ=1Ni=1NAi.

一部の分散の定義では、正規化係数として N-1 ではなく N を使用しています。w1 に設定することで N の係数を指定できます。いずれの場合でも、平均には通常の正規化係数 N を使用します。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2016a で導入

すべて展開する

参考

関数