brain_sensor_pod, a MATLAB code which attempts to find patterns in a set of brain sensor data using the proper orthogonal decomposition (POD) method
We have a 40 x 1500 x 36 array of data, representing readings from 40 sensors, for 1500 time steps, for 36 individuals.
The sensors are placed at known locations on the head. We simplify this information by idealizing the sensors as points on a sphere of unit radius.
We now consider each set of 40 sensor readings to be an item of data, and we apply POD to this data, seeking the first few dominant or representative modes. We choose these modes to have unit norm, to be orthogonal, and to be ordered (either in ascending or descending order). The "most important" modes are those which have the largest projection onto the given data.
The sensors are geometrically related. If we make a simplified flattened map of the sensor locations, that preserves neighbors and roughly preserves areas and lengths, it is possible to define a finite element mass matrix for the 2D data, and use this to try to include some spatial weighting in the POD calculation.
This program carries out both the unweighted and weighted versions of the POD algorithm on the brain sensor data. It displays the 3 most prominent modes in the data.
This data analysis procedure, originally devised by Karl Pearson, has arisen repeatedly in a variety of fields, and hence is known under various names, including:
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
brain_sensor_pod is available in a MATLAB version.