centroid.m

来自「Matlab WSNs 质心法代码」· M 代码 · 共 61 行

M
61
字号
clear
clc
for i=1:1:10
    for j=1:1:10
        x(j+(i-1)*10)=(i-1)*10;
        y(j+(i-1)*10)=(j-1)*10;
    end
end
figure
plot(x,y,'.')
hold on 
axis([0 100 0 100])
xy=[x;y]
hold on
xm=90;
ym=90; 
n=50;   
for i=1:1:n
   Sx(i)=rand(1,1)*xm;
   Sy(i)=rand(1,1)*ym;
    plot(Sx(i),Sy(i),'r*')
    xlabel('x轴')
    ylabel('y轴')
   hold on
end
dm=30  
m=100;  
for j=1:1:n
    SS=[Sx(j);Sy(j)]; 
    k=0;
    for i=1:1:m
        d=norm((xy(:,i)-SS),2); 
        if d<=dm  
            xx(j,i)=xy(1,i);
            yy(j,i)=xy(2,i);
            k=k+1;
        else
            xx(j,i)=0;
            yy(j,i)=0;
        end
    end
    if k~=0
        cent(:,j)=[sum(xx(j,:));sum(yy(j,:))]/k;
    else
        cent(:,j)=0;
    end
 plot(cent(1,j),cent(2,j),'o')  
hold on
 plot([cent(1,j) Sx(j)],[cent(2,j) Sy(j)],'R')  
Title('Centroid')
hold on
MM=[cent(1,j);cent(2,j)]
e(j)=norm((MM-SS),2)/dm
end
figure
axis([0 n 0 1])
   j=1:1:n
    plot(j,e(j) ,'-r.')
   hold on
   Title('Centroid')
   E=sum(e)/n

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?