movstd
移動標準偏差値
構文
説明
M = movstd( は局所 A,k)k 点における標準偏差値を返します。各標準偏差は、長さ k のスライディング ウィンドウにわたる A の隣接要素から計算されます。k が奇数である場合、ウィンドウは現在位置にある要素を中心にして配置されます。k が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。ウィンドウを埋めるのに十分な数の要素がない場合、ウィンドウ サイズは自動的に端点で打ち切られます。ウィンドウが打ち切られた場合、標準偏差値はウィンドウを埋めている要素のみから取得されます。M は A と同じサイズです。
Aがベクトルである場合、movstdはベクトルAの長さに沿って演算します。Aが多次元配列の場合、movstdは、サイズが 1 に等しくないAの最初の次元に沿って演算します。Aが table または timetable の場合、movstdはAの変数に沿って演算します。 (R2025a 以降)
M = movstd(___, は、前述の任意の構文について正規化係数を指定します。w)w = 0 (既定値) の場合、M はウィンドウの長さが k のときに k-1 で正規化されます。w = 1 の場合、M は k で正規化されます。
M = movstd(___, は、nanflag)A の NaN 値を含めるか省略するかを指定します。たとえば、movstd(A,k,"omitnan") は各標準偏差の計算時に NaN 値を無視します。既定では、movstd は NaN 値を含めます。
M = movstd(___, は、名前と値のペアの引数を 1 つ以上使用して標準偏差に追加のパラメーターを指定します。たとえば、Name,Value)x が時間ベクトルである場合、movstd(A,k,"SamplePoints",x) は x の時間を基準とする移動標準偏差を計算します。
例
行ベクトルの 3 点の中心移動標準偏差値を計算します。端点でウィンドウ内の要素数が 3 より少ない場合、使用可能な要素の標準偏差値を取得します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,3)
M = 1×10
2.8284 2.0000 4.7258 4.3589 1.0000 1.0000 3.0551 2.6458 1.0000 0.7071
行ベクトルの 3 点の末尾移動標準偏差値を計算します。端点でウィンドウ内の要素数が 3 より少ない場合、使用可能な要素の標準偏差値を取得します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,[2 0])
M = 1×10
0 2.8284 2.0000 4.7258 4.3589 1.0000 1.0000 3.0551 2.6458 1.0000
行ベクトルの 3 点の中心移動標準偏差値を計算し、個々の標準偏差値をウィンドウ内の要素数で正規化します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,3,1)
M = 1×10
2.0000 1.6330 3.8586 3.5590 0.8165 0.8165 2.4944 2.1602 0.8165 0.5000
行列の各行に対して 3 点の中心移動標準偏差値を計算します。ウィンドウは最初の行で始まり、行の終わりまで横方向にスライドし、それから 2 行目に移動して同様に繰り返します。次元引数は 2 であるため、ウィンドウは A の列を横断する方向にスライドします。次元を指定する場合は常に正規化係数を指定します。
A = [4 8 6; -1 -2 -3; -1 3 4]; M = movstd(A,3,0,2)
M = 3×3
2.8284 2.0000 1.4142
0.7071 1.0000 0.7071
2.8284 2.6458 0.7071
NaN 値が含まれた行ベクトルを作成します。
A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
NaN 値を除外して、ベクトルの 3 点の中心標準偏差を計算します。NaN 値が含まれているウィンドウでは、movstd は NaN 以外の要素で計算します。
M = movstd(A,3,"omitnan")M = 1×10
2.8284 2.8284 6.3640 0.7071 1.0000 0.7071 4.2426 0.7071 1.0000 0.7071
時間ベクトル 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 = 1×6 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 = movstd(A,k,"SamplePoints",t)M = 1×6
2.8284 2.0000 4.7258 4.3589 1.0000 0.7071
行ベクトルの 3 点の中心移動標準偏差値を計算しますが、使用する要素が 3 点より少ない計算を出力から破棄します。言い換えれば、3 要素をすべて含むウィンドウから計算された標準偏差値のみを返し、端点での計算を破棄します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movstd(A,3,"Endpoints","discard")
M = 1×8
2.0000 4.7258 4.3589 1.0000 1.0000 3.0551 2.6458 1.0000
魔方陣の列から table を作成します。
A = magic(3); T = array2table(A)
T=3×3 table
A1 A2 A3
__ __ __
8 1 6
3 5 7
4 9 2
movstd を使用して table 変数の移動標準偏差値を計算します。
M = movstd(T,3)
M=3×3 table
A1 A2 A3
_______ ______ _______
3.5355 2.8284 0.70711
2.6458 4 2.6458
0.70711 2.8284 3.5355
指定した変数についてのみ移動標準偏差値を計算するには、名前と値の引数 DataVariables を指定します。
M2 = movstd(T,3,DataVariables=["A2" "A3"])
M2=3×3 table
A1 A2 A3
__ ______ _______
8 2.8284 0.70711
3 4 2.6458
4 2.8284 3.5355
値を置き換える代わりに table に移動標準偏差値を追加するには、ReplaceValues を false として指定します。
M3 = movstd(T,3,ReplaceValues=false)
M3=3×6 table
A1 A2 A3 A1_movstd A2_movstd A3_movstd
__ __ __ _________ _________ _________
8 1 6 3.5355 2.8284 0.70711
3 5 7 2.6458 4 2.6458
4 9 2 0.70711 2.8284 3.5355
入力引数
入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。
データ型: single | double | logical | table | timetable
ウィンドウの長さ。数値または duration スカラーとして指定します。k が正の整数値スカラーである場合、中心標準偏差には現在位置の要素とその周囲の要素が含まれます。
たとえば、movstd(A,3) は局所 3 点における標準偏差値の配列を計算します。

方向指定ウィンドウの長さ。2 つの要素を含む数値または duration 行ベクトルとして指定します。kb と kf が正の整数値スカラーの場合、計算は kb+kf+1 個の要素に対して行われます。この計算には、現在位置にある要素、その前にある kb 個の要素、その後にある kf 個の要素が含まれます。
たとえば、movstd(A,[2 1]) は局所 4 点における標準偏差値の配列を計算します。
![movstd(A,[2 1]) computation. The elements in the sample window are 4, 1, 3, and 5, so the resulting local standard deviation is 1.71.](movstd_windowing.png)
重み。次のいずれかの値に指定します。
0—k-1で正規化されます (kはウィンドウの長さ)。k=1の場合、重みはkです。1—kで正規化されます。
データ型: single | double
演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 でない最初の配列次元です。
次元 dim は movstd が沿って動作する次元、つまり指定されたウィンドウがスライドする方向を示します。
m 行 n 列の入力行列 A を考えます。
movstd(A,k,0,1)は、Aの各列についてk要素の移動標準偏差を計算し、m行n列の行列を返します。
movstd(A,k,0,2)は、Aの各行についてk要素の移動標準偏差を計算し、m行n列の行列を返します。
A が table または timetable の場合、dim を指定することはできません。movstd 関数は、常に table および timetable の変数に沿って演算を行います。 (R2025a 以降)
欠損値の条件。次の値のいずれかとして指定します。
"includemissing"または"includenan"— 各標準偏差の計算時にAのNaN値を含めます。ウィンドウ内のいずれかの要素がNaNの場合、Mの対応する要素はNaNです。"includemissing"と"includenan"の動作は同じです。"omitmissing"または"omitnan"—AのNaN値を無視し、点の数を減らして各標準偏差を計算します。ウィンドウ内のすべての要素がNaNの場合、Mの対応する要素はNaNです。"omitmissing"と"omitnan"の動作は同じです。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: M = movstd(A,k,"Endpoints","fill")
端点付近のウィンドウの処理方法。次のオプションのいずれかとして指定します。
| 値 | 説明 |
|---|---|
"shrink" | 入力の端点付近のウィンドウのサイズを縮小し、既存の要素のみを含めます。 |
"discard" | 既存の要素とウィンドウが完全にはオーバーラップしない場合、標準偏差値を出力しません。
|
"fill" | 存在しない要素を NaN に置き換えます。 |
| 数値または logical スカラー | 存在しない要素を指定した数値または論理値に置き換えます。 |
標準偏差を計算するためのサンプル点。ベクトルとして指定します。サンプル点は A のデータの位置を表します。サンプル点は等間隔でサンプリングされている必要はありません。既定では、サンプル点ベクトルは [1 2 3 ... ] です。
移動ウィンドウはサンプル点を基準として定義されます。サンプル点は並べ替えられていなければならず、また一意の要素を含んでいなければなりません。たとえば、t が入力データに対応する時間のベクトルである場合、movstd(rand(1,10),3,"SamplePoints",t) には t(i)-1.5 から t(i)+1.5 までの時間間隔を表すウィンドウがあります。
サンプル点ベクトルのデータ型が datetime または duration である場合、移動ウィンドウの長さの型は duration でなければなりません。
サンプル点の間隔が不均一で、Endpoints を指定する場合、その値は "shrink" でなければなりません。
R2025a 以降
演算の対象とする table または timetable 変数。次の表のオプションのいずれかとして指定します。
DataVariablesを指定しない場合、movstdはすべての変数について演算を行います。この動作は既定の動作です。DataVariablesを指定した場合、movstdは指定された変数のみについて演算を行います。DataVariablesで指定されていないその他の変数は、変更されずに出力に渡されます。
| インデックス方式 | 指定する値 | 例 |
|---|---|---|
変数名 |
|
|
変数インデックス |
|
|
関数ハンドル |
|
|
変数の型 |
|
|
R2025a 以降
値置換インジケーター。A が table または timetable の場合に、次の値のいずれかとして指定します。
trueまたは1— 出力 table または出力 timetable で、入力 table または入力 timetable の変数をmovstdからの出力値を含む変数に置き換えます。falseまたは0— 出力 table または出力 timetable にmovstdからの出力値を含む変数を追加します。
入力データがベクトル、行列、または多次元配列の場合、ReplaceValues はサポートされません。
詳細
N 個のスカラー観測値からなる有限長ベクトル A の標準偏差は、次のように定義されます。
ここで μ は、A の平均値です。
標準偏差は、分散の平方根です。標準偏差の一部の定義では、N-1 の代わりに N の正規化係数が使用されます。これは、w を 1 に設定することで指定できます。
拡張機能
この関数は tall 配列を制限付きでサポートしています。
名前と値の引数
SamplePoints、DataVariables、およびReplaceValuesはサポートされません。table および timetable の入力はサポートされていません。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
名前と値の引数
DataVariablesおよびReplaceValuesはサポートされません。table および timetable の入力はサポートされていません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
movstd 関数は GPU 配列入力をサポートしますが、次の使用上の注意および制限があります。
名前と値の引数
SamplePoints、DataVariables、およびReplaceValuesはサポートされません。table および timetable の入力はサポートされていません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
使用上の注意および制限:
名前と値の引数
DataVariablesおよびReplaceValuesはサポートされません。table および timetable の入力はサポートされていません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2016a で導入演算対象の数値データを含む table および timetable を入力として指定できます。既定では、movstd は table または timetable のすべての変数について演算を行います。ただし、どの変数を演算の対象とするかを指定できます。出力 table または出力 timetable に movstd からの出力値を新しい変数として追加することもできます。
"includemissing" オプションまたは "omitmissing" オプションを使用して、各標準偏差の計算時に入力配列の欠損値を含めるか省略します。これらのオプションの動作はそれぞれ、"includenan" オプションおよび "omitnan" オプションと同じです。
関数 movstd で、サンプル点がある場合に行列に対して計算する際のパフォーマンスが向上しています。
たとえば、以下のコードでは、対応するサンプル点をもつ 300 行 300 列の行列の移動標準偏差を計算しています。直前のリリースと比較して、このコードは約 2.3 倍速くなっています。
function timingMovstd A = randn(300); t = sort(rand(300,1)); tic for k = 1:2000 movstd(A,0.1,"SamplePoints",t); end toc end
おおよその実行時間は以下のとおりです。
R2022b: 1.49 秒
R2023a: 0.64
コードは、Windows® 10、Intel® Xeon® CPU E5-1650 v4 (3.60 GHz) のテスト システム上で関数 timingMovstd を呼び出して時間測定されました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)