Files
OpenFace/model_training/CCNF/CCRF/lib/CalculateYqDs.m

55 lines
1.4 KiB
Matlab

function [ PrecalcYqDs ] = CalculateYqDs( n_sequences, x, similarityFNs, sparsityFNs, y)
%CALCULATESIMILARITIES Summary of this function goes here
% Detailed explanation goes here
K = numel(similarityFNs);
K2 = numel(sparsityFNs);
PrecalcYqDs = zeros(n_sequences, K + K2);
sample_length = size(y,1);
similarities = cell(K, 1);
sparsities = cell(K2, 1);
Similarities = zeros([sample_length, sample_length, K+K2]);
Bs = zeros([sample_length, sample_length, K+K2]);
for k=1:K
similarities{k} = similarityFNs{k}(x);
Similarities(:,:,k) = similarities{k};
S = Similarities(:,:,k);
D = diag(sum(S));
Bs(:,:,k) = D - S;
end
for k=1:K2
% this is constant so don't need to recalc
sparsities{k} = sparsityFNs{k}(x);
Similarities(:,:,K+k) = sparsities{k};
S = Similarities(:,:,K+k);
D = diag(sum(S));
% PrecalcQ2s{q}(:,:,k) = D - S;
Bs(:,:,K+k) = D + S;
% PrecalcQ2sFlat{q}{k} = PrecalcQ2s{q}{k}(logical(tril(ones(size(S)))));
end
for q = 1 : n_sequences
% go over all of the similarity metrics and construct the
% similarity matrices
yq = y(:,q);
for k=1:K+K2
PrecalcYqDs(q,k) = -yq'*Bs(:,:,k)*yq;
end
end
end