Main Content

movmad

Moving median absolute deviation

Description

example

M = movmad(A,k)returns an array of localk-point平均绝对偏差(尼), where each MAD is calculated over a sliding window of lengthkacross neighboring elements ofA.Mis the same size asA.

Whenkis odd, the window is centered about the element in the current position. Whenkis even, the window is centered about the current and previous elements. The window size is automatically truncated at the endpoints when there are not enough elements to fill the window. When the window is truncated, the MAD is taken over only the elements that fill the window.

  • IfAis a vector, thenmovmadoperates along the length of the vectorA.

  • IfAis a multidimensional array, thenmovmadoperates along the first dimension ofAwhose size does not equal 1.

example

M = movmad(A,[kb kf])computes the MAD with a window of lengthkb+kf+1that includes the element in the current position,kbelements backward, andkfelements forward.

example

M = movmad(___,dim)specifies the dimension ofAto operate along for any of the previous syntaxes. For example,movmad(A,k,2)for a matrixAoperates across the columns ofA, computing thek-element sliding MAD for each row.

example

M = movmad(___,nanflag)specifies whether to include or omitNaNvalues inA. For example,movmad(A,k,"omitnan")ignoresNaNvalues when computing each MAD. By default,movmadincludesNaNvalues.

example

M = movmad(___,Name,Value)specifies additional parameters for the moving MAD using one or more name-value arguments. For example, ifxis a vector of time values, thenmovmad(A,k,"SamplePoints",x)computes the moving MAD ofArelative to the times inx.

Examples

collapse all

Compute the three-point centered moving MAD of a row vector. When there are fewer than three elements in the window at the endpoints, compute over the elements that are available.

A = [1 2 4 -1 -2 -3 -1 3 2 1]; M = movmad(A,3)
M =1×100.5000 1.0000 2.0000 1.0000 1.0000 1.0000 2.0000 1.0000 1.0000 0.5000

Compute the three-point trailing moving MAD of a row vector. When there are fewer than three elements in the window at the endpoints, compute over the elements that are available.

A = [1 2 1 -1 -2 -3 -1 3 4 1]; M = movmad(A,[2 0])
M =1×100 0.5000 0 1.0000 1.0000 1.0000 1.0000 2.0000 1.0000 1.0000

Compute the 3-point centered moving MAD for each row of a matrix. The dimension argument is 2, which slides the window across the columns ofA. The window starts on the first row, slides horizontally to the end of the row, then moves to the second row, and so on.

A = [1 2 1; -1 -2 -3; -1 3 4]
A =3×31 2 1 -1 -2 -3 -1 3 4
M = movmad(A,3,2)
M =3×30.5000 0 0.5000 0.5000 1.0000 0.5000 2.0000 1.0000 0.5000

Create a row vector containingNaNvalues.

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

Compute the three-point centered moving MAD of the vector, excludingNaNvalues. For windows that contain anyNaNvalue,movmadcomputes with the non-NaNelements.

M = movmad(A,3,"omitnan")
M =1×102.0000 2.0000 4.5000 0.5000 1.0000 0.5000 3.0000 0.5000 1.0000 0.5000

Compute a 3-hour centered moving MAD of the data inAaccording to the time vectort.

A = [4 8 6 -1 -2 -3]; k = hours(3); t = datetime(2016,1,1,0,0,0) + hours(0:5)
t =1x6 datetime01-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 = movmad(A,k,"SamplePoints",t)
M =1×62.0000 2.0000 2.0000 1.0000 1.0000 0.5000

Compute the three-point centered moving MAD of a row vector, but discard any calculation that uses fewer than three points from the output. In other words, return only the MADs computed from a full three-element window, discarding endpoint calculations.

A = [1 2 1 -1 -2 -3 -1 3 4 1]; M = movmad(A,3,"Endpoints","discard")
M =1×80 1 1 1 1 2 1 1

Input Arguments

collapse all

Input array, specified as a vector, matrix, or multidimensional array.

Window length, specified as a numeric or duration scalar. Whenkis a positive integer scalar, the centered MAD includes the element in the current position plus surrounding neighbors.

For example,movmad(A,3)computes an array of local three-point MAD values.

movmad(A,3) computation. The elements in the sample window are 1, 3, and 2, so the resulting local MAD is 1.

Directional window length, specified as a numeric or duration row vector containing two elements. Whenkbandkfare positive integer scalars, the calculation is overkb+kf+1elements. The calculation includes the element in the current position,kbelements before the current position, andkfelements after the current position.

For example,movmad(A,[2 1])computes an array of local four-point MAD values.

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

Dimension to operate along, specified as a positive integer scalar. If you do not specify the dimension, then the default is the first array dimension of size greater than 1.

Consider anm-by-ninput matrix,A:

  • movmad(A,k,1)computes thek-element sliding MADs for each column ofAand returns anm-by-nmatrix.

    movmad(A,k,1) column-wise operation

  • movmad(A,k,2)computes thek-element sliding MADs for each row ofAand returns anm-by-nmatrix.

    movmad(A,k,2) row-wise operation

Missing value condition, specified as one of these values:

  • "includemissing"or"includenan"— IncludeNaNvalues inAwhen computing each MAD. If any element in the window isNaN, then the corresponding element inMisNaN."includemissing"and"includenan"have the same behavior.

  • "omitmissing"or"omitnan"— IgnoreNaNvalues inA, and compute each MAD over fewer points. If all elements in the window areNaN, then the corresponding element inMisNaN."omitmissing"and"omitnan"have the same behavior.

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and encloseNamein quotes.

Example:M = movmad(A,k,"Endpoints","fill")

Method to treat windows near endpoints, specified as one of these options:

Value Description
"shrink" Shrink the window size near the endpoints of the input to include only existing elements.
"discard" 当窗口不输出任何疯狂的值呢not completely overlap with existing elements.
"fill" Replace nonexisting elements withNaN.
numeric or logical scalar Replace nonexisting elements with the specified numeric or logical value.

Sample points for computing MADs, specified as a vector. The sample points represent the locations of the data inA. Sample points do not need to be uniformly sampled. By default, the sample points vector is[1 2 3 ... ].

Moving windows are defined relative to the sample points, which must be sorted and contain unique elements. For example, iftis a vector of times corresponding to the input data, thenmovmad(rand(1,10),3,"SamplePoints",t)has a window that represents the time interval betweent(i)-1.5andt(i)+1.5.

When the sample points vector has data typedatetimeorduration, then the moving window length must have typeduration.

If the sample points are nonuniformly spaced andEndpointsis specified, then its value must be"shrink".

More About

collapse all

Median Absolute Deviation

For a finite-length vectorAmade up ofNscalar observations, the median absolute deviation (MAD) is defined as

MAD = median ( | A i median ( A ) | )

fori = 1,2,...,N.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2017a

expand all

See Also

Functions