BRAIN_SENSOR_POD is a MATLAB program which attempts to find patterns in a set of brain sensor data.
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.
CVT_BASIS, a FORTRAN90 program which uses discrete CVT (Centroidal Voronoi Tessellation) techniques to produce a small set of basis vectors that are good cluster centers for a large set of data vectors;
CVT_BASIS_FLOW, a FORTRAN90 program which extracts dominant solution modes from a set of flow solutions using CVT methods.
POD_BASIS_FLOW, a FORTRAN90 program which extracts dominant solution modes from a set of flow solutions using POD (Proper Orthogonal Decomposition).
SVD_BASIS, a C++ program which applies the singular value decomposition to a collection of data vectors, extracting dominant modes;
SVD_BASIS, a FORTRAN90 program which applies the singular value decomposition to a collection of data vectors, extracting dominant modes;
SVD_BASIS, a MATLAB program which applies the singular value decomposition to a collection of data vectors, extracting dominant modes;
SVD_BASIS_WEIGHT, a FORTRAN90 program which is similar to SVD_BASIS, but which allows the user to assign weights to each data vector.
TWOD, a MATLAB library which contains functions useful for 2D finite element calculations.
You can go up one level to the MATLAB source codes.