AP聚类算法的matlab部分程序,求解释!
% Compute responsibilities R(i,k)=S(i,k)-max{A(i,j)+S(i,j)} j=1,2,3,……N,j!=k
for ii=1:N %ii为公式中的k
old = R(:,ii);
AS = A(:,ii) + ST(:,ii); % 列向量
[Y,I]=max(AS); % I返回最大值的index
AS(I)=-Inf;
[Y2,I2]=max(AS); %
R(:,ii)=ST(:,ii)-Y;
R(I,ii)=ST(I,ii)-Y2;
R(:,ii)=(1-lam)*R(:,ii)+lam*old;% Damping
end;
请问这里为什么要要取次大值呢,且公式中的j!=k在哪里体现出来了?
[解决办法]
[Y,I]=max(AS); % I返回最大值的index
AS(I)=-Inf;
[Y2,I2]=max(AS); %
R(:,ii)=ST(:,ii)-Y; % 这里做减法用的是是最大值
R(I,ii)=ST(I,ii)-Y2; % 次最大值只用在ii列的原最大值那一行的那一个元素
多贴点代码,这里看不出j!=k和为什么要用用次最大值处理原最大值对应的元素