Matlab - Error al plotear

 
Vista:
sin imagen de perfil

Error al plotear

Publicado por Manuel (5 intervenciones) el 14/06/2018 23:30:47
Estoy realizando un ejemplo de K-means. Tengo problemas al plotear las nuevas posición de los centroides. No me aparecen.

Esto es lo que hice:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
clc; clear all;
%condiciones iniciales 
  x=[0 0 0 1 1 1 2 3 4 5 5 5 6 6 6]';
   y=[1 2 3 1.5 2 2.5 2 2 2 1.5 2 2.5 1 2 3]';
   x1=x+7; y1=y.*2; x2=x1+7; y2=y.*(-2);
   x0=[x;x1;x2];
   y0=[y;y1;y2];
   X=[x0,y0]; %datos a agrupar
   v=[2 4; 2.3 2]; %posicion de centroides iniciales
   %c=2;
   %Se calcula las distancias
    [n,N]=size(X); %matriz de datos
    [no,c]=size(v); %matriz de centroides
    for i=1:c
        for j=1:N
            sumaa=0;
            for k=1:no
                dis(k)=(X(k,j)-v(k,i))^2;
                sumaa=sumaa+dis(k);
            end
            d(i,j)=sqrt(sumaa);
        end
    end
    %se actualiza la matriz de pertenecia
    for j=1:N
        if d(1,j)>d(2,j);
            U(1,j)=0;
            U(2,j)=1;
        else
            U(1,j)=1;
            U(2,j)=0;
        end
    end
    %se calcula la media de los valores de las muestras(matriz de centroides)
    suma=zeros(n,c);
    cantidad=zeros(c,1);
    %cantidad de los valores
    for C=1:no
        for j=1:N
            if U(C,j)==1
                cantidad(C,1)=cantidad(C,1)+1;
                suma(:,C)=suma(:,C)+X(:,j);
            end
        end
        media(:,C)=suma(:,C)/cantidad(C,1);
    end
    %se actualiza el vector centroide
    m=media;
 
% %dibuja
figure(1)
plot(X(:,1),X(:,2),'b.','MarkerSize',15);
hold on
plot(m(:,1),m(:,2),'kx', 'color', 'r');



Pd: Me salen en el plot, solo los datos y no los centroides (m).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder