Valore assoluto tra tutti i puntiMi chiedevo se esiste un modo semplice per aggregare tra loro il valore assoluto di tutti i punti di una colonna. Ho scritto alcuni script che mi daranno i dati sulla posizione dello stage per uno strumento, ma voglio vedere come le posizioni si misurano rispetto a se stesse piuttosto che le posizioni assolute della macchina.
Per esempio:
Se ho 3 punti, voglio sapere la distanza tra 1-2, 1-3 e 2-3.
Se ho 4 punti, voglio sapere la distanza tra 1-2, 1-3, 1-4, 2-3, 2-4 e 3-4.
E così via...
Per i piccoli set di dati questo può essere fatto facilmente, ma ho set di dati che vanno da 20 a 100 punti. Sto cercando qualcosa di costruito o forse un'idea per scrivere la soluzione. Ogni aiuto è molto apprezzato.
Ri: valore assoluto tra tutti i puntiPerfezionare! Grazie, è stato davvero facile per la mia applicazione.
Ho uno script python in esecuzione che estrae e legge i dati di posizione da un file XML in un CSV. Quindi sto usando JMP per analizzare le posizioni del palcoscenico dal CSV. Quindi, non ho altri jsl per quello che sto cercando di fare ... ancora.
Ri: valore assoluto tra tutti i puntiImmagino che 'più semplice' dipenda da cos'altro fa il tuo codice e come. Ma se vuoi che la matrice sia triangolare più in basso puoi usare:
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);
Ri: valore assoluto tra tutti i puntiSoluzioni fantastiche! Entrambi funzionano molto bene per quello che sto facendo. Mi piace la funzione 'Distanza ()', dovrò esaminarla di più.
Ho una domanda successiva:
Entrambe queste soluzioni producono essenzialmente una matrice con la distanza tra ogni punto della cella. Mi stavo chiedendo se c'è un modo semplice per rimuovere il triangolo inferiore o superiore della matrice? Non ho bisogno di entrambe le parti e renderà l'analisi più facile.
Ri: valore assoluto tra tutti i puntiBello
Ri: valore assoluto tra tutti i puntiPuoi anche utilizzare la funzione 'Distanza ()' (consulta 'Aiuto> Guida allo scripting'):
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);
Ri: valore assoluto tra tutti i puntiPenso che questo potrebbe fare ciò che vuoi:
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] ) );
);