open source pkg v1
This commit is contained in:
57
pkg/OpenFace/matlab_version/CCNF/CalcSigmaCCNFflat.m
Normal file
57
pkg/OpenFace/matlab_version/CCNF/CalcSigmaCCNFflat.m
Normal file
@@ -0,0 +1,57 @@
|
||||
function [ SigmaInv] = CalcSigmaCCNFflat(alphas, betas, n, precalcQ2withoutBeta, precalc_eye, precalc_zeros)
|
||||
%CALCSIGMAPRF Summary of this function goes here
|
||||
% Detailed explanation goes here
|
||||
% constructing the sigma
|
||||
|
||||
% A = zeros(n);
|
||||
%
|
||||
% for i=1:n
|
||||
%
|
||||
% A(i,i) = alphas' * mask(i,:)';
|
||||
%
|
||||
% end
|
||||
|
||||
% this is simplification of above code
|
||||
% if(useIndicators)
|
||||
% A = diag(mask * alphas);
|
||||
% else
|
||||
|
||||
% A = sum(alphas) .* eye(n);
|
||||
A = sum(alphas) .* precalc_eye;
|
||||
% A = sum(alphas) * eye(n);
|
||||
% not faster
|
||||
% a = mtimesx(sum(alphas), eye(n), 'SPEED');
|
||||
% a2 = mtimesx(sum(alphas), eye(n), 'SPEEDOMP');
|
||||
% end
|
||||
|
||||
% calculating the B from the paper
|
||||
|
||||
% for i=1:n
|
||||
% for j=1:n
|
||||
%
|
||||
% if(i == j)
|
||||
% q2(i,j) = beta * (sum(S(i,:)) - S(i,i));
|
||||
% else
|
||||
% q2(i,j) = -beta * S(i,j);
|
||||
% end
|
||||
% end
|
||||
% end
|
||||
|
||||
% the above code can be simplified by the following lines of code
|
||||
% using the precalculated lower triangular elements of B without beta
|
||||
Btmp = precalcQ2withoutBeta * betas;
|
||||
% not faster
|
||||
% Btmp = mtimesx(precalcQ2withoutBeta, betas, 'SPEED');
|
||||
% Btmp = mtimesx(precalcQ2withoutBeta, betas, 'SPEEDOMP');
|
||||
% now make it into a square symmetric matrix
|
||||
% B = zeros(n,n);
|
||||
B = precalc_zeros;
|
||||
on = tril(true(n,n));
|
||||
B(on) = Btmp;
|
||||
B = B';
|
||||
B(on) = Btmp;
|
||||
|
||||
SigmaInv = 2 * (A + B);
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user