function [ optimal_C, optimal_g ] = gridsearch( labels, samples )

c_vector = logspace( -2, 4, 5 );
g_vector = logspace( -5, 1, 7 );
[C, g] = meshgrid( c_vector, g_vector );
grid_size = size( g, 1 ) * size( C, 2 );
acc = zeros( 1, grid_size );

parfor k = 1:grid_size
    svm_options = ['-s 0 -t 0 -q -h 1 -b 1 -v 5 -c ', num2str( C(k) ), ' -g ', num2str( g(k) ) ];
    acc(k) = svmtrain( double(labels), double(samples), svm_options );
end

[ ~ , index ] = max(acc);
optimal_C = C(index);
optimal_g = g(index);
end

