Matlab - Dibujar centro masas de nube de puntos

   
Vista:

Dibujar centro masas de nube de puntos

Publicado por Miguel (3 intervenciones) el 14/02/2012 12:22:52
Buenos días! Estoy haciendo una función en Matlab que reciba un array x size 2x10 y calcule:

- Un array 1x2 con el centro de masas de los puntos formados por los pares x(1,:) y x(2,:)
- Un array 1x10 con la distancia de cada punto al centro de masas
- Un plot que muestre la nube de puntos, el centroide y líneas discontinuas entre cada punto y el
centroide

Los dos primeros puntos ya los he conseguido hacer pero el tercero se me resiste. Mediante el comando plot(x(1,:),x(2,:),'*'); he conseguido que me muestre la nube de puntos y con hold on que me muestre el centroide también, pero no consigo que lo de las líneas discotinuas. Si alguien tuviera una idea de como hacerlo se lo agradecería. Un saludo.
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
Imágen de perfil de Dave

Dibujar centro masas de nube de puntos

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 14/02/2012 14:16:59
Hola Miguel;

Te sugiero que en primer lugar crees dos vectores X y Y con las coordenadas de las lineas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
X= [xc, x1
      xc, x2
      xc, x3
      xc, x4
      xc, x5
      xc, x6];
 
Y= [yc, y1
      yc, y2
      yc, y3
      yc, y4
      yc, y5
      yc, y6];
 
plot(X,Y,':')



Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dibujar centro masas de nube de puntos

Publicado por Miguel (3 intervenciones) el 14/02/2012 15:00:15
Creo que has dado con la clave. Yo estaba pensando que habría algún comando para hacerlo directamente y me estaba volviendo loco buscándolo. Voy a probar y te cuento si me valió. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dibujar centro masas de nube de puntos

Publicado por Miguel (3 intervenciones) el 14/02/2012 16:20:25
Al final ha sido fácil, la dejo aquí por si le sirve a alguien:

function [centroide , distancia] = ejercicio1(x)
centroide=mean(x.').';
distancia=sqrt(((x(1:2:19)-centroide(1)).^2)+(((x(2:2:20)-centroide(2)).^2)));
plot(x(1,:),x(2,:),'*');
hold on;
plot(centroide(1),centroide(2),'o r');
q=[centroide(1)*(ones(1,10));x(1,:)];
w=[centroide(2)*(ones(1,10));x(2,:)];
plot(q,w,': g');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dibujar centro masas de nube de puntos

Publicado por Adriano (2 intervenciones) el 15/02/2012 14:41:10
Hola Miguel, estoy haciendo un ejercicio parecido al tuyo y queria saber si no te importaba poner el codigo del apartado 2, el de sacar un array 1x10 con la distancai de cada punto al centro de masas. Llevo un buen rato intentandolo pero no me sale
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dave

Dibujar centro masas de nube de puntos

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 15/02/2012 15:17:16
Hola Miguel;

Una opción más generica sería la siguiente:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
function [centroide,distancia] = ejercicio1(x,y)
 
X=mean(x);
Y=mean(y);
 
disp(['Centroide (',num2str(X),',',num2str(Y),')'])
disp('Distancias:')
 
d=sqrt((x - X).^2 + (y - Y).^2)
 
XX=[X*ones(size(x));x];
YY=[Y*ones(size(y));y];
 
plot(XX,YY,':g')


Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar