movmedian
移動中央値
構文
説明
M = movmedian(
は局所 A
,k
)k
点における中央値の配列を返します。各中央値は、長さ k
のスライディング ウィンドウにわたる A
の隣接要素から計算されます。k
が奇数である場合、ウィンドウは現在位置にある要素を中心にして配置されます。k
が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。ウィンドウを埋めるのに十分な数の要素がない場合、ウィンドウ サイズは自動的に端点で打ち切られます。ウィンドウが打ち切られた場合、中央値はウィンドウを埋めている要素のみから取得されます。M
は A
と同じサイズです。
A
がベクトルである場合、movmedian
はベクトルA
の長さに沿って演算します。A
が多次元配列の場合、movmedian
は、サイズが 1 に等しくないA
の最初の次元に沿って演算します。
M = movmedian(___,
は、前述の任意の構文について、演算の対象とする dim
)A
の次元を指定します。たとえば、A
が行列である場合、movmedian(A,k,2)
は A
の列に沿って動作し、各行の k
個の要素の移動中央値を計算します。
M = movmedian(___,
は、nanflag
)A
の NaN
値を含めるか省略するかを指定します。たとえば、movmedian(A,k,"omitnan")
は各中央値の計算時に NaN
値を無視します。既定では、movmedian
は NaN
値を含めます。
M = movmedian(___,
は、名前と値のペアの引数を 1 つ以上使用して移動中央値に追加のパラメーターを指定します。たとえば、Name,Value
)x
が時間値のベクトルである場合、movmedian(A,k,"SamplePoints",x)
は x
の時間を基準とする移動中央値を計算します。
例
ベクトルの中心移動中央値
行ベクトルの 3 点の中心移動中央値を計算します。端点でウィンドウ内の要素数が 3 より少ない場合、使用可能な要素の平均値を取得します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmedian(A,3)
M = 1×10
6.0000 6.0000 6.0000 -1.0000 -2.0000 -2.0000 -1.0000 3.0000 4.0000 4.5000
ベクトルの末尾移動中央値
行ベクトルの 3 点の末尾移動中央値を計算します。端点でウィンドウ内の要素数が 3 より少ない場合、使用可能な要素の平均値を取得します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmedian(A,[2 0])
M = 1×10
4 6 6 6 -1 -2 -2 -1 3 4
行列の移動中央値
行列の各行に対して 3 点の中心移動中央値を計算します。ウィンドウは最初の行で始まり、行の終わりまで横方向にスライドし、それから 2 行目に移動して同様に繰り返します。次元引数は 2 であるため、ウィンドウは A
の列を横断する方向にスライドします。
A = [4 8 6; -1 -2 -3; -1 3 4]
A = 3×3
4 8 6
-1 -2 -3
-1 3 4
M = movmedian(A,3,2)
M = 3×3
6.0000 6.0000 7.0000
-1.5000 -2.0000 -2.5000
1.0000 3.0000 3.5000
欠損値を除外した移動中央値
NaN
値が含まれた行ベクトルを作成します。
A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
NaN
値を除外して、ベクトルの 3 点の中心移動中央値を計算します。NaN
値が含まれているウィンドウでは、movmedian
は NaN
以外の要素で計算します。
M = movmedian(A,3,"omitnan")
M = 1×10
6.0000 6.0000 3.5000 -1.5000 -2.0000 -2.5000 0 3.5000 4.0000 4.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 = movmedian(A,k,"SamplePoints",t)
M = 1×6
6.0000 6.0000 6.0000 -1.0000 -2.0000 -2.5000
フルウィンドウの中央値のみを返す
行ベクトルの 3 点の中心移動中央値を計算しますが、使用する要素が 3 点より少ない計算を出力から破棄します。言い換えれば、3 要素をすべて含むウィンドウから計算された中央値のみを返し、端点での計算を破棄します。
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmedian(A,3,"Endpoints","discard")
M = 1×8
6 6 -1 -2 -2 -1 3 4
入力引数
A
— 入力配列
ベクトル | 行列 | 多次元配列
入力配列。ベクトル、行列または多次元配列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
k
— ウィンドウの長さ
数値または duration スカラー
ウィンドウの長さ。数値または duration スカラーとして指定します。k
が正の整数値スカラーである場合、中心中央値には現在位置の要素とその周囲の要素が含まれます。
たとえば、movmedian(A,3)
は局所 3 点における中央値の配列を計算します。
[kb kf]
— 方向指定ウィンドウの長さ
2 つの要素を含む数値または duration 行ベクトル
方向指定ウィンドウの長さ。2 つの要素を含む数値または duration 行ベクトルとして指定します。kb
と kf
が正の整数値スカラーの場合、計算は kb+kf+1
個の要素に対して行われます。この計算には、現在位置にある要素、その前にある kb
個の要素、その後にある kf
個の要素が含まれます。
たとえば、movmedian(A,[2 1])
は局所 4 点における中央値の配列を計算します。
dim
— 演算の対象の次元
正の整数スカラー
演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 より大きい最初の配列次元です。
次元 dim
は movmedian
が沿って動作する次元、つまり指定されたウィンドウがスライドする方向を示します。
m
行 n
列の入力行列 A
を考えます。
movmedian(A,k,1)
は、A
の各列についてk
要素の移動中央値を計算し、m
行n
列の行列を返します。movmedian(A,k,2)
は、A
の各行についてk
要素の移動中央値を計算し、m
行n
列の行列を返します。
nanflag
— 欠損値の条件
"includemissing"
(既定値) | "includenan"
| "omitmissing"
| "omitnan"
欠損値の条件。次の値のいずれかとして指定します。
"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 = movmedian(A,k,"Endpoints","fill")
Endpoints
— 端点付近のウィンドウの処理方法
"shrink"
(既定値) | "discard"
| "fill"
| 数値または logical スカラー
端点付近のウィンドウの処理方法。次のオプションのいずれかとして指定します。
値 | 説明 |
---|---|
"shrink" | 入力の端点付近のウィンドウのサイズを縮小し、既存の要素のみを含めます。 |
"discard" | ウィンドウが既存の要素と完全にはオーバーラップしない場合、中央値を出力しません。 |
"fill" | 存在しない要素を NaN に置き換えます。 |
数値または logical スカラー | 存在しない要素を指定した数値または論理値に置き換えます。 |
SamplePoints
— 中央値を計算するためのサンプル点
ベクトル
中央値を計算するためのサンプル点。ベクトルとして指定します。サンプル点は A
のデータの位置を表します。サンプル点は等間隔でサンプリングされている必要はありません。既定では、サンプル点ベクトルは [1 2 3 ... ]
です。
移動ウィンドウはサンプル点を基準として定義されます。サンプル点は並べ替えられていなければならず、また一意の要素を含んでいなければなりません。たとえば、t
が入力データに対応する時間のベクトルである場合、movmedian(rand(1,10),3,"SamplePoints",t)
には t(i)-1.5
から t(i)+1.5
までの時間間隔を表すウィンドウがあります。
サンプル点ベクトルのデータ型が datetime
または duration
である場合、移動ウィンドウの長さの型は duration
でなければなりません。
サンプル点の間隔が不均一で、Endpoints
を指定する場合、その値は "shrink"
でなければなりません。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
ウィンドウの最大の長さは
gpuArray
データの場合 31 です。名前と値の引数
SamplePoints
はサポートされていません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2016a で導入R2023a: 欠損値の条件の指定
"includemissing"
オプションまたは "omitmissing"
オプションを使用して、各中央値の計算時に入力配列の欠損値を含めるか省略します。これらのオプションの動作はそれぞれ、"includenan"
オプションおよび "omitnan"
オプションと同じです。
R2023a: サンプル点をもつ行列に対する計算時のパフォーマンスが向上
関数 movmedian
で、サンプル点がある場合に行列に対して計算する際のパフォーマンスが向上しています。
たとえば、以下のコードでは、対応するサンプル点をもつ 300 行 300 列の行列の移動中央値を計算しています。直前のリリースと比較して、このコードは約 1.7 倍速くなっています。
function timingMovmedian A = randn(300); t = sort(rand(300,1)); tic for k = 1:400 movmedian(A,0.1,"SamplePoints",t); end toc end
おおよその実行時間は以下のとおりです。
R2022b: 1.14 秒
R2023a: 0.67
コードは、Windows® 10、Intel® Xeon® CPU E5-1650 v4 (3.60 GHz) のテスト システム上で関数 timingMovmedian
を呼び出して時間測定されました。
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)