test
来源:互联网 发布:张召忠 知乎 编辑:程序博客网 时间:2024/06/05 20:24
start=1;k=1;for i=1:66095% 第一行 a=A(i,1); b=A(i,2); d1=A(i,3); d2=A(i,4); d3=A(i,5); t1=A(i,6); t2=A(i,7); t3=A(i,8);% 下一行 na=A(i+1,1); nb=A(i+1,2); nd1=A(i+1,3); nd2=A(i+1,4); nd3=A(i+1,5); nt1=A(i+1,6); nt2=A(i+1,7); nt3=A(i+1,8);% 比较 if (na~=a)||(nb~=b) ending=i; block(k).mat=A(start:ending,:); k=k+1; start=i+1; elseif (d1~=nd1)||(d2~=nd2)||(d3~=nd3) ending=i; block(k).mat=A(start:ending,:); k=k+1; start=i+1; elseif abs(nt1*60+nt2-(t1*60+t2))>5 ending=i; block(k).mat=A(start:ending,:); k=k+1; start=i+1; elseif i==66095 ending=66096; block(k).mat=A(start:ending,:); else continue; endend%清理点数目较少(<50)的轨迹endb=k;k=1;for j=1:endb if size(block(j).mat,1)>50 traj(k).mat=block(j).mat; k=k+1; endend
%相似性尺度:移动欧氏距离D=zeros(size(traj,2));for i1=1:size(traj,2) for i2=1:size(traj,2) windowsize=min(size(traj(i1).mat,1),size(traj(i2).mat,1)); if size(traj(i1).mat,1)>size(traj(i2).mat,1) bigger=traj(i1).mat; smaller=traj(i2).mat; else bigger=traj(i2).mat; smaller=traj(i1).mat; end steps=size(bigger,1)-windowsize; if steps~=0 distance=0; for i3=1:steps+1 dis=0; for i4=1:windowsize dis=dis+(smaller(i4,9)-bigger(i4+i3-1,9))^2+(smaller(i4,10)-bigger(i4+i3-1,10))^2; end distance(i3)=dis; end distance=min(distance); else distance=0; dis=0; for i5=1:windowsize dis=dis+(smaller(i5,9)-bigger(i5,9))^2+(smaller(i5,10)-bigger(i5,10))^2; end distance=dis; end D(i1,i2)=distance; endend
%km聚类
k=10;
%随机选中心
center=410*rand(k,1);
center=ceil(center);
center=sort(center);
%就近分类
flag=1;
while flag>0
flag=0;
point(:,1)=center;
next=ones(k,1);
for j1=1:410
for j2=1:k
dis(j2)=D(j1,center(j2));
end
num=find(dis==min(dis),1,'first');
point(num,next(num)+1)=j1;
next(num)=next(num)+1;
end
%计算新中心
newcenter=zeros(k,1);
for j3=1:k
group=find(point(j3,:));
sz=size(group,2);
dist=zeros(sz-1,1);
for j4=2:sz
for j5=2:sz
dist(j4-1)=dist(j4-1)+D(point(j3,j4),point(j3,j5));
end
end
newcenter(j3)=point(j3,find(dist==min(dist),1,'first')+1);
if newcenter(j3)~=center(j3)
flag=1;
end
end
center=newcenter;
end
%在此分类直到中心不变
%km聚类k=10;%随机选中心center=410*rand(k,1);center=ceil(center);center=sort(center);%就近分类flag=1;while flag>0 flag=0;point(:,1)=center;next=ones(k,1);for j1=1:410 for j2=1:k dis(j2)=D(j1,center(j2)); end num=find(dis==min(dis),1,'first'); point(num,next(num)+1)=j1; next(num)=next(num)+1;end%计算新中心newcenter=zeros(k,1);for j3=1:k group=find(point(j3,:)); sz=size(group,2); dist=zeros(sz-1,1); for j4=2:sz for j5=2:sz dist(j4-1)=dist(j4-1)+D(point(j3,j4),point(j3,j5)); end end newcenter(j3)=point(j3,find(dist==min(dist),1,'first')+1); if newcenter(j3)~=center(j3) flag=1; endend center=newcenter;end%在此分类直到中心不变
%显示matcolor=[1 0 0 1 0.5 0 1 1 0 0 1 0 0 0.5 1 0 0 1 0.5 0 1 0 0 0 0.2 0.1 0.05 0.3 1 0];for j6=1:k group2=find(point(j6,:)); sz=size(group2,2); maincolor=matcolor(j6,:); for j7=2:sz color=maincolor; color=color*rand(1); num2=point(j6,j7); plot(traj(num2).mat(:,9),traj(num2).mat(:,10),'linestyle','-','color',color); hold on; end legend('group1','group2','group3','group4','group5','group6','group7','group8','group9','group10'); title('Clustering Result:when k=10');end
0 0
- test
- test
- test
- test
- test
- test
- test
- Test
- test
- Test
- test
- test
- test
- test
- test
- test
- test
- Test
- 音视频技术大牛
- Maven系列--pom.xml 配置详解
- Android点滴---drawable粘贴图片后 R文件报错,解决
- VB.net 类、对象、字段、属性、方法、构造函数
- [AS3]播放器判断视频状态(侦听视频流的开始和结束)
- test
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
- VC++中字符串编码的转换
- BZOJ1209【rope】
- dd
- HDOJ 畅通工程 1863(并查集+prim)
- Android点滴---TextView,RadioButton 设置 HTML文本,加载网络图片
- ecshop增加积分记录的相关代码
- IIS 配置PHP 运行环境