function [ affinity ] = CalcPHsAffinityByRCN( data, actual_graph_size, num_missing_nodes) % sigal 29.10.13 % based on CalcAffinityByCommonNeighbors_Sparse %since missing nodes are only connected to one node we will artificially %connect them to their only neighbor's neighbors, and keep the connection to %the neighbor itself. if nargin > 1 data = ConnectMissingNodesToNeighborsNeighbors(data, actual_graph_size, num_missing_nodes); end firstPH = actual_graph_size-num_missing_nodes+1; % give the #common neighbors per node pair (nxn) % sigal - oct 12 - bug fix by ron - include the node itself as its friend affinity = data(firstPH:end,:) * data(:,firstPH:end) + data(firstPH:end,firstPH:end)*2; s_rows = sum(data(:,firstPH:end)) + 1; % give the #neighbors per PH node (nx1)? %%s_cols = sum(data,2); affinity = NormalizeCommonNeighbors(affinity, s_rows); %new mex function %sigal 29.10.13 - normolize by diagonal min v = diag(affinity); max_val = min(v); %max_val = max(max(affinity)); affinity = affinity ./ max_val; for i = 1 : size(affinity,1) affinity(i,i) = 1; end %sigal 29.10.13 - end end