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. |
Siehe auch
id-1623504