How to split so many features (for 47 images) (extracted using detectSURFFeatures(), ExtractFeatures() in matlab) into training and testing sets using matlab code?
I think more people can help you if you can clarify the task you are dealing with.
In most cases, people do not directly classify local features. Instead, people encode local features into a single image vector and use this vector as a feature for classification. You may consider first reading papers on local feature encoding, e.g. bag of visual words (BOVW), locally-constrained linear coding (LLC) and Fisher vector.
Then, you have a set of images, each of which is represented by a vector. Suppose we have 10 images. We first assign an ID, from 1 to 10, to each image. Create an array containing 10 integers, again from 1 to 10. Randomly sort the 10 integers using, e.g. matlab function "randperm". Given the sorted list, look at the first 5 integers. Collect the 5 images corresponding to the 5 IDs, and use them as trainig images. Use the remainder as testing images.
What you really need here is to split the images into a training set and a test set. If you have a resent version of MATLAB with the Computer Vision System Toolbox, you can do that easily using the imageSet object and its parition() method.
According to Andrew Ng's online machine learning course, a rule of thumb would be 60% for training, 20% for validation and 20% for test. Further details is available on coursera, Machine Learning course, section 10, "Advice for applying machine learning".