-
Notifications
You must be signed in to change notification settings - Fork 5
/
expectedVarM.m
26 lines (16 loc) · 779 Bytes
/
expectedVarM.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function [NEV] = expectedVarM(xs, lambda, VV, lHatD, xxx, invKxx, noise, bb, BB)
% Uncertainty sampling loss function for moment matched sqrtBBQ
xs = xs';
xxxScaled = xxx .* repmat(sqrt(1./VV),length(xxx(:,1)),1);
distxsxx = ...
pdist2_squared_fast(xs.*repmat(sqrt(1./VV),length(xs(:,1)),1),xxxScaled);
Kxsx = lambda^2 * (1/(prod(2*pi*VV).^0.5)) * exp(-0.5*distxsxx);
Kxsxs = lambda^2 * (1/(prod(2*pi*VV).^0.5))*(1+noise)*ones(length(xs(:,1)),1);
varPred = (Kxsxs - diag(Kxsx*(invKxx * Kxsx')));
l_0 = (Kxsx*(invKxx*lHatD));
if any(varPred <= 0) || any(isnan(xs(:))) || any(~isreal(varPred))
varPred = 0;
end
priorWeighting = mvnpdf(xs,bb,BB);
NEV = -(l_0.^2 .* varPred + 0.5*varPred.^2) .* priorWeighting.^2; %Negative expected variance.
end