Files
miSim/util/objectiveFunctionWrapper.m
T

19 lines
740 B
Matlab

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