This function treats a matrix as a column-wise set of signals and circularly shifts each column so that it aligns with the first column of data so that the inner product between those columns is maximized with respect to all other shifts.
If only 1 output is specified, then dataout (a matrix the same size as data) is returned.
data: a matrix of data vectors stored column-wise.
y: A matrix size(data) back.
lagout: Optional. A vector of lag indices. These give the amount the column vectors of dataout are shifted with respect to the first
column of data.