Valor absoluto entre todos los puntos.Me preguntaba si hay una manera fácil de agregar el valor absoluto de todos los puntos en una columna entre sí. He escrito algunos scripts que me darán los datos de ubicación del escenario para una herramienta, pero quiero ver cómo las ubicaciones se comparan con respecto a ellas en lugar de las ubicaciones absolutas de la máquina.
Por ejemplo:
Si tengo 3 puntos, quiero saber la distancia entre 1-2, 1-3 y 2-3.
Si tengo 4 puntos, quiero saber la distancia entre 1-2, 1-3, 1-4, 2-3, 2-4 y 3-4.
Y así...
Para conjuntos de datos pequeños, esto se puede hacer fácilmente, pero tengo conjuntos de datos que van desde 20 a 100 puntos. Estoy buscando algo integrado o posiblemente una idea para escribir la solución. Cualquier ayuda es muy apreciada.
Re: Valor absoluto entre todos los puntos.¡Perfecto! Gracias, esto fue realmente fácil para mi aplicación.
Tengo una secuencia de comandos de Python que se extrae y luego lee los datos de ubicación de un archivo XML en un CSV. Luego estoy usando JMP para analizar las ubicaciones de los escenarios del CSV. Entonces, no tengo ningún otro jsl para lo que estoy tratando de hacer ... todavía.
Re: Valor absoluto entre todos los puntos.Supongo que 'más fácil' depende de qué otra cosa hace su código, y cómo. Pero si quieres que la matriz sea triangular inferior, puedes usar:
Names Default To Here( 1 );
// Data
v = [1, 2, 3, 4];
// Compute Euclidean distance between all pairs of points
dm = Sqrt(Distance(v, v));
// Make matrix dm lower triangular
dm2 = J(NRow(dm), NCol(dm), .);
for (r=1, r<=NRow(dm), r++,
dm2[r, 1::r] = dm[r, 1::r];
);
dt = AsTable(dm2);
Re: Valor absoluto entre todos los puntos.Soluciones impresionantes! Ambos funcionan muy bien para lo que estoy haciendo. Me gusta la función 'Distancia ()', tendré que estudiarla más.
Tengo una pregunta de seguimiento:
Ambas soluciones producen esencialmente una matriz con la distancia entre cada punto de la celda. Me preguntaba si hay una manera fácil de eliminar el triángulo inferior o superior de la matriz. No necesito ambos lados y facilitará el análisis.
Re: Valor absoluto entre todos los puntos.Bonito
Re: Valor absoluto entre todos los puntos.También puede usar la función 'Distancia ()' (consulte 'Ayuda> Guía de secuencias de comandos'):
Names Default To Here( 1 );
// Data
v = [1, 2, 3, 4];
// Compute Euclidean distance between all pairs of points
dm = Sqrt(Distance(v, v));
dt = AsTable(dm);
Re: Valor absoluto entre todos los puntos.Creo que esto podría hacer lo que quieras:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
a = dt:weight << get values;
b = a;
c = [];
For( i = 1, i <= N Rows( a ), i++,
c = c || abs( a[i] - b);
dt << New Column( "col" || Char( i ), values( c[0, i] ) );
);