This chapter is dedicated to the Matlab interface. However, most of the comments here have their Octave equivalent.

Content of the Matlab interface

The Matlab interface of Yael is limited to functions that are not available in Matlab, i.e., the most basic matrix manipulation functions are readily available in Matlab or can be implemented trivially.

The functions currently provided are:

  • yael_kmeans. Although there is a kmeans function in Matlab, that one is not very efficient. Moreover, it is not available in the core Matlab program, since it requires a specific toolbox.
  • yael_knn is used to find the k nearest neighbors with respect to the Euclidean distance. Although for k=1 Matlab does a good job, finding k>1 neighbors requires the sort function, which is very inefficient when k is small compared to the number of vectors.
  • yael_hamming is used to compute the Hamming distances between binary vectors represented in a compact form. The function also allows one to get only the Hamming distances below a threshold (range search).
  • yael_L2sqr computes all the square distances between two sets of vectors. Therefore, it computes n_1\times n_2 distances.
  • yael_kmin and yael_kmax compute the k smallest (or largest) values of a set of scalar. It is more efficient than sorting the data.
  • yael_vecs_normalize normalizes a set of vectors.
  • yael_gmm learns a Gaussian mixture model (diagonal form).
  • yael_fisher computes the Fisher Kernel representation of a set of features.
  • yael_ivf is used for creating an inverted file system.