Use the function cluster to give a cluster idx to each sample in X:
C = cluster(Z,'MaxClust',number_of_groups);
Then find the closest sample for each new observation in W,
C(knnsearch(X,W,'k',1))
You may want also to look at knnclassify for more elaborated voting schemes. See also clusterdata that wraps pdist, linkage and cluster in one function call.