Valeur absolue entre tous les pointsJe me demandais s'il existait un moyen simple d'agréger la valeur absolue de tous les points d'une colonne les uns aux autres. J'ai écrit des scripts qui me donneront les données d'emplacement de scène pour un outil, mais je veux voir comment les emplacements se mesurent par rapport à eux-mêmes plutôt que les emplacements absolus de la machine.
Par exemple:
Si j'ai 3 points, je veux connaître la distance entre 1-2, 1-3 et 2-3.
Si j'ai 4 points, je veux connaître la distance entre 1-2, 1-3, 1-4, 2-3, 2-4 et 3-4.
Etc...
Pour les petits ensembles de données, cela peut facilement être fait, mais j'ai des ensembles de données allant de 20 à 100 points. Je cherche quelque chose d'intégré ou peut-être une idée pour écrire la solution. Toute aide est très appréciée.
Re : valeur absolue entre tous les pointsParfait! Merci, c'était en effet facile pour mon application.
J'ai un script python en cours d'exécution qui extrait puis lit les données de localisation d'un fichier XML dans un CSV. Ensuite, j'utilise JMP pour analyser les emplacements de scène à partir du CSV. Donc, je n'ai pas d'autre jsl pour ce que j'essaie de faire... pour le moment.
Re : valeur absolue entre tous les pointsJe suppose que "plus facile" dépend de ce que fait votre code et comment. Mais si vous voulez que la matrice soit triangulaire inférieure, vous pouvez utiliser :
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 : valeur absolue entre tous les pointsDes solutions géniales ! Les deux fonctionnent très bien pour ce que je fais. J'aime la fonction 'Distance()', je vais devoir m'y pencher davantage.
J'ai une question de suivi :
Ces deux solutions produisent essentiellement une matrice avec la distance entre chaque point de la cellule. Je me demandais s'il existait un moyen simple de supprimer le triangle inférieur ou supérieur de la matrice ? Je n'ai pas besoin des deux côtés et cela facilitera l'analyse.
Re : valeur absolue entre tous les pointsAgréable
Re : valeur absolue entre tous les pointsVous pouvez également utiliser la fonction 'Distance()' (voir 'Aide > Guide de script') :
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 : valeur absolue entre tous les pointsJe pense que cela pourrait faire ce que vous voulez:
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] ) );
);