function [Y, K, eigVals, sdeScore] = sde(A, neighbors, targetd)
% Calculate constraints
N = length(A);
G = convertAffinityToDistance(A);
params.printlevel=1;
params.maxiter=100;
%distances = Bn;
[irow1, icol1] = find(neighbors==1);
%[m,n] = size(irow1)
numConstraints1 = length(irow1);
%numConstraints2 = length(icol1)
AA = sparse(numConstraints1, N*N);
bb = zeros(numConstraints1, 1);
for i=1:numConstraints1
AA(i, (irow1(i) - 1)*N + irow1(i)) = 1;
AA(i, (icol1(i) - 1)*N + icol1(i)) = 1;
AA(i, (irow1(i) - 1)*N + icol1(i)) = -1;
AA(i, (icol1(i) - 1)*N + irow1(i)) = -1;
bb(i) = G(irow1(i), icol1(i));
end
%[m,n] = size(AA)
% make all the constraints unique
[b, m, n] = unique(AA, 'rows');
A = AA(m,
;
b = bb(m);
% add constraint that points must be centered
%ones(1,N^2)
A=[ones(1,N^2);A];
%sum(A)
b=[0;b];
i=[1;i];
%length(i)
% new objective function
cc = eye(N);
%length(cc(
)
c=0-cc(
;
flags.s=N;
flags.l=0;
OPTIONS.maxiter=params.maxiter;
OPTIONS.printlevel=params.printlevel;
[x d z info]=csdp(A,b,c,flags,OPTIONS);
csdpoutput=reshape((x(flags.l+1:flags.l+flags.s^2)), N, N);
K = csdpoutput;
为啥要进行红色那部分处理呢?可以加qq:274911560