资源简介
使用AP对于2维图像和3维图像进行聚类
代码片段和文件信息
function idx = AP(S)
N = size(S1);
%初始化为0
A=zeros(NN);%Availabilities
R=zeros(NN); %Responsibility
lam=0.9; % Set damping factor
%前后两次聚类结果相同的累计次数,初始为-1
same_time = -1;
%最多进行10000次循环退出
for iter=1:10000
% Compute responsibilities
Rold=R;
AS=A+S;
%找到每行中最大的值max(a(ik)+s(ik))Y是一列最大值,I是序号
[YI]=max(AS[]2);
%每行的最大值设为-1000,不会影响第二大值的寻找
for i=1:N
AS(iI(i))=-1000;
end
%找到每行中第二大的值Y2,计算最大值位置的r(ik)用
[Y2~]=max(AS[]2);
R=S-repmat(Y[1N]);
for i=1:N
R(iI(i))=S(iI(i))-Y2(i);
end
R=(1-lam)*R+lam*Rold; % Dampen responsibilities
% Compute availabilities
Aold=A;
Rp=max(R0);
for k=1:N
Rp(kk)=R(kk);
end
%竖着复制
A=repmat(sum(Rp1)[N1])-Rp;
dA=diag(A);
A=min(A0);
for k=1:N
A(kk)=dA(k);
end;
A=(1-lam)*A+lam*Aold; % Dampen availabilities
if(same_time == -1)%第一次
E=R+A;
[~ idx_old] = max(E[]2);
same_time = 0;
else
E=R+A;
[~ idx] = max(E[]2);%计算得到新的idx
if(sum(abs(idx_old-idx)) == 0)%前后两次迭代得到的分类结果完全相同
same_time = same_time + 1;%次数加一
if(same_time == 10)%分类结果稳定在当前结果10次
%输出循环次数
disp(num2str(iter));
break;
end
end
%尚未完全相同,继续迭代
idx_old = idx;
end
end
E=R+A;
[~ idx] = max(E[]2);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-06-03 23:18 AP\
文件 3487 2016-05-05 16:02 AP\Aggregation.mat
文件 1621 2016-06-02 19:59 AP\AP.m
文件 1344 2016-06-03 01:48 AP\AP_3D.m
文件 952 2016-06-02 21:58 AP\AP_top.m
文件 1854 2016-05-05 16:02 AP\Compound.mat
文件 32149 2016-05-05 16:02 AP\D31.mat
文件 17625 2016-04-18 21:06 AP\depth.png
文件 1226 2016-05-05 16:02 AP\flame.mat
文件 1810 2016-05-05 16:02 AP\jain.mat
文件 1499 2016-05-05 16:02 AP\pathba
文件 4373 2016-05-05 16:02 AP\R15.mat
文件 1556 2016-05-05 16:02 AP\spiral.mat
- 上一篇:CA数字签名认证系统解决方案
- 下一篇:Tasm+Tcc+Tli
nk编译选项
评论
共有 条评论