Add column non-monotonic normalisation - this is untested and may cause an error as in the event that the matrix is sparse the algorithm will produce NaN values in place of 0 columns