reduce3d

reduce3d entfernt Datenpunkte aus x/y/z-Datensätzen.

idx = reduce3d(rvX, rvY, rvZ)
idx = reduce3d(rvX, rvY, rvZ, nClasses, nType)

Returnwert

idx ist ein Vektor mit ganzen Zahlen der Länge 1 bis nClasses mal nClasses. Im Fehlerfall ist idx[1] gleich 0.

Parameter

rvX

rvX ist ein Vektor mit X-Koordinaten.

rvY

rvY ist ein Vektor mit Y-Koordinaten.

rvZ

rvZ ist ein Vektor mit Z-Koordinaten.

nClasses

nClasses ist ein Wert zwischen 2 und 1000 (Default ist 100). Bei einem negativen Wert werden die Klassengrenzen um eine halbe Klassenbreite verschoben.

nType

nType ist einer der folgenden Werte (Default ist 5):

Wert Bedeutung
0 oder „first“ Der erste Punkt jeder Klasse wird verwendet.
1 oder „last“ Der letzte Punkt jeder Klasse wird verwendet.
2 oder „zmin“ Der Punkt mit der kleinsten z-Koordinate jeder Klasse wird verwendet.
3 oder „zmax“ Der Punkt mit der größten z-Koordinate jeder Klasse wird verwendet.
4 oder „mean“ Es wird der Punkt verwendet der dem Mittelwert der z-Koordinate innerhalb der Klasse am nächsten kommt.
5 oder „median“ Es wird der Punkt verwendet der dem mittleren Wert der z-Koordinate innerhalb der Klasse am nächsten kommt.

Kommentar

Die Funktion legt ein Netz der Größe nClasses * nClasses über die Daten. Fallen mehrere Punkte in ein Rechteck des Netzes, wird nur jeweils ein Punkt aus dieser Gruppe verwendet. Bei einem 100 mal 100 Netz ergeben sich dann höchstens 10000 Punkte. Liegen alle Punkte auf einer Geraden ergeben sich 100 Punkte.

NaNs (0/0), Infs (1/0), Missing Values (1e10) sowie Werte im Bereich kleiner -1e10 oder größer 1e10 werden vorab entfernt.

Beispiel

def XYZFilterCallback(x, y, z)
{
    return reduce3d(x,y,z, 40, "median");
}
def test_xyz()
{
    x = rand(100000, 1)*15-7.5;
    y = rand(100000, 1)*15-7.5;
    r=sqrt(x.*x + y.*y);
    z=sin(r)./r;
    plotxyz(x,y,z);
}

History

Version Beschreibung
5.10.2 Neu.

id-1623504