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

数据场方法是模拟物理中场论的思想,认为两个客体之间存在某种相互作用,通过模拟这种相互作用就可以利用物理上客体在场空间上的自组织现象完成对数据的聚类。
基于数据场和云模型的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 NewRoman','Fontsize',10);
title('原始数据散点图','FontName','Times NewRoman','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;
            forn=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 NewRoman','FontSize',6);
xlabel('脉宽','FontName','Times New Roman','FontSize',10);
ylabel('载频','FontName','Times New Roman','FontSize',10);
title('势分布等高线图(z轴投影)','FontName','Times NewRoman','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 NewRoman','FontSize',6);
xlabel('到达角','FontName','Times NewRoman','FontSize',10);
ylabel('载频','FontName','Times New Roman','FontSize',10);
title('势分布等高线图(y轴投影)','FontName','Times NewRoman','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 NewRoman','FontSize',6);
xlabel('到达角','FontName','Times NewRoman','FontSize',10);
ylabel('脉宽','FontName','Times New Roman','FontSize',10);
title('势分布等高线图(x轴投影)','FontName','Times NewRoman','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;%分类准确度指标
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值