function f = objectiveFunctionWrapper(center, sigma) % Convenience function to generate MVNPDFs at a point % Makes it look a lot neater to instantiate and sum these to make % composite objectives in particular arguments (Input) center (:, 2) double; sigma (:, 2, 2) double = reshape(eye(2), 1, 2, 2); end arguments (Output) f (1, 1) {mustBeA(f, "function_handle")}; end if size(sigma, 1) == 1 && size(center, 1) > 1 sigma = repmat(sigma, size(center, 1), 1, 1); end assert(size(center, 1) == size(sigma, 1)); f = @(x,y) sum(cell2mat(arrayfun(@(i) mvnpdf([x(:), y(:)], center(i,:), squeeze(sigma(i, :, :))), 1:size(center,1), "UniformOutput", false)), 2); end