Absolutwert zwischen allen PunktenIch habe mich gefragt, ob es eine einfache Möglichkeit gibt, den absoluten Wert aller Punkte in einer Spalte miteinander zu aggregieren. Ich habe einige Skripte geschrieben, die mir die Bühnenstandortdaten für ein Werkzeug liefern, aber ich möchte sehen, wie sich die Standorte im Verhältnis zu sich selbst und nicht im Verhältnis zu den absoluten Standorten der Maschine verhalten.
Zum Beispiel:
Wenn ich 3 Punkte habe, möchte ich den Abstand zwischen 1-2, 1-3 und 2-3 wissen.
Wenn ich 4 Punkte habe, möchte ich den Abstand zwischen 1-2, 1-3, 1-4, 2-3, 2-4 und 3-4 wissen.
Usw...
Bei kleinen Datensätzen ist dies problemlos möglich, ich habe jedoch Datensätze mit 20–100 Punkten. Ich suche nach etwas Integriertem oder möglicherweise nach einer Idee, die Lösung per Skript zu erstellen. Jede Hilfe wird sehr geschätzt.
Betreff: Absolutwert zwischen allen PunktenPerfekt! Vielen Dank, das war für meine Bewerbung wirklich einfach.
Ich habe ein Python-Skript ausgeführt, das die Standortdaten aus einer XML-Datei extrahiert und dann in eine CSV-Datei liest. Dann verwende ich JMP, um die Etappenorte aus der CSV zu analysieren. Ich habe also noch kein anderes JSL für das, was ich versuche.
Betreff: Absolutwert zwischen allen PunktenIch denke, dass „einfacher“ davon abhängt, was Ihr Code sonst noch tut und wie. Wenn Sie jedoch möchten, dass die Matrix eine untere Dreiecksform hat, können Sie Folgendes verwenden:
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);
Betreff: Absolutwert zwischen allen PunktenTolle Lösungen! Beide funktionieren wirklich gut für das, was ich mache. Mir gefällt die Funktion „Distance()“, ich muss sie mir genauer ansehen.
Ich habe eine Folgefrage:
Beide Lösungen erzeugen im Wesentlichen eine Matrix mit dem Abstand zwischen jedem Punkt in der Zelle. Ich habe mich gefragt, ob es eine einfache Möglichkeit gibt, das untere oder obere Dreieck der Matrix zu entfernen? Ich brauche nicht beide Seiten und es wird die Analyse einfacher machen.
Betreff: Absolutwert zwischen allen PunktenHübsch
Betreff: Absolutwert zwischen allen PunktenSie können auch die Funktion „Distance()“ verwenden (siehe „Hilfe > Skript-Anleitung“):
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);
Betreff: Absolutwert zwischen allen PunktenIch denke, das könnte das tun, was Sie wollen:
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] ) );
);