(1) Randomly initialize the set of endmembers from the dimensionality reduced
  hyperspectral data. , and ;
(2) repeat
(3) Calculate the volume of the current endmember set
     ;
(4) For every pixel spectrum vector ( , is the number of pixels) in the
  dimensionality reduced data set, test this pixel in all the endmember positions
  in the set and recalculate the volume ;
(5) If the new volume is larger than the previous one, then update the set to
   , and , then go to step (3). If the new volume is not larger than the
  previous one, then no replacement is required;
(6) until the endmember set converges and no new replacement takes place.
Algorithm 1: N-FINDR.