Ich versuche zu bestimmen, wie sich die Entfernung von einem Punkt auf Messungen auswirkt, um einen minimalen / maximalen Punkt innerhalb eines Bereichs von Punkten zu finden.
Ich habe versucht, dies in den angehängten Dateien zu tun, aber ich kann keine Möglichkeit finden, dies programmgesteuert zu tun.Ich habe versucht, dies zu tun, indem ich eine Tabelle mit N Zeilen N-mal verkettete, die XY-Spalte kopierte, Y und dann X sortierte und dann diese sortierte Spalte in die NxN-Tabelle einfügte.
Ich habe versucht, dies mit EVAL / SUBSTITUTION zu tun, kann es aber nicht erfolgreich ausführen.
Haben Sie die Funktion Distance() gesehen? Hier ist ein Beispiel aus dem Scripting Index eines Skripts, das es verwendet:
Names Default To Here( 1 );
/*1-D example*/
exX1 = [1, 2, 3, 4];
exX2 = [2, 4, 6, 8];
/*Compute squared Euclidean distance*/
exD = Distance( exX1, exX2 );
/*Verify result*/
exDm = J( 4, 4, . );
For( exi = 1, exi <= 4, exi++,
For( exj = 1, exj <= 4, exj++,
exDm[exi, exj] =
Sum( (exX1[exi, 0] - exX2[exj, 0]) ^ 2 )
)
);
Show( exDm == exD );
/*2-D example*/
exX1 = [1 1, 2 2, 3 3, 4 4];
exX2 = [2 1, 4 2, 6 0, 8 7];
/*Compute squared Euclidean distance*/
exD = Distance( exX1, exX2 );
/*Verify result*/
exDm = J( 4, 4, . );
For( exi = 1, exi <= 4, exi++,
For( exj = 1, exj <= 4, exj++,
exDm[exi, exj] =
Sum( (exX1[exi, 0] - exX2[exj, 0]) ^ 2 )
)
);
Show( exDm == exD );
/*2-D example*/
exX1 = [1 1, 2 2, 3 3, 4 4];
exX2 = [2 1, 4 2, 6 0, 8 7];
/*Compute squared Euclidean distance, with a scaler [0.5 2.0]*/
exD = Distance( exX1, exX2, [0.5 2.0] );
/*Verify result*/
exDm = J( 4, 4, . );
For( exi = 1, exi <= 4, exi++,
For( exj = 1, exj <= 4, exj++,
exDm[exi, exj] =
Sum(
[0.5 2.0] :*</img> (
Abs( exX1[exi, 0] - exX2[exj, 0] ) ^ 2)
)
)
);
Show( exDm == exD );
/*2-D example*/
exX1 = [1 1, 2 2, 3 3, 4 4];
exX2 = [2 1, 4 2, 6 0, 8 7];
/*Compute squared Euclidean distance, with scalers [0.5 2.0] and powers [1.5 2.0]*/
exD = Distance( exX1, exX2, [0.5 2.0], [1.5 2.0] );
/*Verify result*/
exDm = J( 4, 4, . );
For( exi = 1, exi <= 4, exi++,
For( exj = 1, exj <= 4, exj++,
exDm[exi, exj] =
Sum(
[0.5 2.0] :*</img> (
Abs( exX1[exi, 0] - exX2[exj, 0] ) :^ [
1.5 2.0])
)
)
);
Show( exDm == exD );