Computing Median Absolute Deviation

Use the VSL_SS_METHOD_FAST method to compute a median absolute deviation estimate in the datasets. The calculation is straightforward and follows the pattern of the example below:

#include "mkl_vsl.h"
#define DIM 3      /* dimension of the task */ 
#define N   1000   /* number of observations */
int main()
    VSLSSTaskPtr task;
    float x[DIM][N];  /* matrix of observations */
    float mdad[DIM];
    MKL_INT p, n, xstorage;
    int status;
    /* Parameters of the task and initialization */
    p = DIM;
    n = N;
    /* Create a task */
    status = vslsSSNewTask( &task, &p, &n, &xstorage, (float*)x, 0, 0 );
    /* Initialize the task parameters */
    status = vslsSSEditTask( task, VSL_SS_ED_MDAD, mdad );
    /* Compute median absolute deviation in observations */
    status = vslsSSCompute(task, VSL_SS_MDAD, VSL_SS_METHOD_FAST );
    /* Deallocate the task resources */
    status = vslSSDeleteTask( &task );
    return 0;

The size of the array to hold median absolute deviation should be sufficient for storing at least p values of the estimate, where p is the dimension of the task.

Computation of median absolute deviation is only possible for data arrays available at once, or in separate blocks of the dataset.