one to many images matching in matlab?
5 images per person is really very few.  In this situation it makes sense to use as much data for the training set as you possibly can.  This means for each person randomly select 4 images for training, and one for testing.  You should use this procedure several times so that you have a number of training set/test set combinations.

If you have access to the Statistics Toolbox for Matlab, check out cvpartition function.

If not, then you should have a loop over all persons, and for each person use the randperm function to generate a randomly shuffled list of indices of the images.  Then you can take the image corresponding to the first index and add it to your test set, and put the rest into your training set. Or you can put 2 images into the test set, or however many you like.  Generally, the training set should be larger than the test set.

You should generate the training and the test set several times, each time calling rng with a different value, to reset the seed of the random number generator.  If you generate 10 training/test set pairs, then you evaluate your algorithm 10 times and get 10 accuracy values.  From them you can compute error bars, or you can compare to other algorithms using hypothesis testing.

As to how you actually classify the images, that is very much a separate question, and the answer depends on what's in the images.  What exactly is on that image you've posted?