加载中…
个人资料
GreenSim团队
GreenSim团队
  • 博客等级:
  • 博客积分:0
  • 博客访问:448,549
  • 关注人气:680
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

基于数据场和云模型的FCM聚类算法MATLAB源代码

(2012-09-01 20:15:15)
标签:

it

杂谈

知识/探索

    数据场方法是模拟物理中场论的思想,认为两个客体之间存在某种相互作用,通过模拟这种相互作用就可以利用物理上客体在场空间上的自组织现象完成对数据的聚类。
基于数据场和云模型的FCM聚类算法MATLAB源代码
基于数据场和云模型的FCM聚类算法MATLAB源代码
基于数据场和云模型的FCM聚类算法MATLAB源代码
基于数据场和云模型的FCM聚类算法MATLAB源代码
%%
clc
clear
close all
%% 导入原始数据
%  GreenSim团队——专业级算法设计&代写程序
%  欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim
load radar525_7.txt; data=radar525_7';%导入原始数据
%load radar525_81.txt; data=radar525_81';%导入原始数据
%% 数据预处理
X0=data(1:3,:);%参与聚类的数据
Y0=data(4,:);%分类标签(不参与聚类)
[X,PSX]=mapminmax(X0,-1,1);%归一化
N=size(X,2);
%相关性分析
disp('相关系数矩阵为');
disp(corrcoef(X'));
%原始数据的散点图
figure
scatter3(X(1,:),X(2,:),X(3,:),5*ones(1,N),Y0,'field');
xlabel('载频','FontName','Times New Roman','Fontsize',10);
ylabel('脉宽','FontName','Times New Roman','Fontsize',10);
zlabel('到达角','FontName','Times New Roman','Fontsize',10);
title('原始数据散点图','FontName','Times New Roman','Fontsize',10);
grid on
%% 使用数据场的方法分析聚类中心
W=51;%网格划分尺度
dd=2/(W-1);%网格间距
Delta=0.15;%辐射因子
V=zeros(W,W,W);
for i=1:W
    x=-1+dd*i;
    disp(i);
    for j=1:W
        y=-1+dd*j;
        %disp(j);
        for k=1:W
            z=-1+dd*k;
            for n=1:N
                x0=X(1,n);
                y0=X(2,n);
                z0=X(3,n);
                %计算势能
                D2=(x-x0)^2+(y-y0)^2+(z-z0)^2;
                v=exp(-D2/(2*Delta*Delta));
                V(i,j,k)=V(i,j,k)+v;
            end
        end
    end
end
%%
%绘图
figure
[xx,yy]=meshgrid(-1:dd:1,-1:dd:1);
Vz=zeros(W,W);
for x=1:W
    for y=1:W
        vz=0;
        for z=1:W
            vz=vz+V(x,y,z);
        end
        Vz(x,y)=vz;
    end
end
[C,h]=contour(xx,yy,Vz,[0:50:5000]);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
text_handle=clabel(C,h);
set(text_handle,'FontName','Times New Roman','FontSize',6);
xlabel('脉宽','FontName','Times New Roman','FontSize',10);
ylabel('载频','FontName','Times New Roman','FontSize',10);
title('势分布等高线图(z轴投影)','FontName','Times New Roman','FontSize',10);
figure
[xx,zz]=meshgrid(-1:dd:1,-1:dd:1);
Vy=zeros(W,W);
for x=1:W
    for z=1:W
        vy=0;
        for y=1:W
            vy=vy+V(x,y,z);
        end
        Vy(x,z)=vy;
    end
end
[C,h]=contour(xx,zz,Vy,[0:50:5000]);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
text_handle=clabel(C,h);
set(text_handle,'FontName','Times New Roman','FontSize',6);
xlabel('到达角','FontName','Times New Roman','FontSize',10);
ylabel('载频','FontName','Times New Roman','FontSize',10);
title('势分布等高线图(y轴投影)','FontName','Times New Roman','FontSize',10);
figure
[yy,zz]=meshgrid(-1:dd:1,-1:dd:1);
Vx=zeros(W,W);
for y=1:W
    for z=1:W
        vx=0;
        for x=1:W
            vx=vx+V(x,y,z);
        end
        Vx(y,z)=vx;
    end
end
[C,h]=contour(yy,zz,Vx,[0:50:5000]);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
text_handle=clabel(C,h);
set(text_handle,'FontName','Times New Roman','FontSize',6);
xlabel('到达角','FontName','Times New Roman','FontSize',10);
ylabel('脉宽','FontName','Times New Roman','FontSize',10);
title('势分布等高线图(x轴投影)','FontName','Times New Roman','FontSize',10);
%% 整理聚类结果
JL=zeros(1,N);
for i=1:N
    tn=U0(:,i);
    maxtn=max(tn);
    pos=find(tn==maxtn);
    JL(i)=pos(1);
end
F=JL-Y0;
ERR=100*length(find(F==0))/N;%分类准确度指标

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有