Promediar puntos de datos similares con una tolerancia
Este ejemplo muestra cómo utilizar uniquetol
para encontrar el promedio de la coordenada z
de puntos 3D con coordenadas x
e y
similares (dentro de la tolerancia).
Emplee los puntos aleatorios obtenidos de la función peaks
del dominio como el conjunto de datos. Añada una pequeña cantidad de ruido a los datos.
xy = rand(10000,2)*6-3;
z = peaks(xy(:,1),xy(:,2)) + 0.5-rand(10000,1);
A = [xy z];
plot3(A(:,1), A(:,2), A(:,3), '.')
view(-28,32)
Encuentre puntos con coordenadas x
e y
similares utilizando uniquetol
con estas opciones:
Especifique
ByRows
comotrue
, ya que las filas deA
contienen las coordenadas de los puntos.Especifique
OutputAllIndices
comotrue
para devolver los índices de todos los puntos que se encuentran dentro de la tolerancia entre sí.Especifique
DataScale
como[1 1 Inf]
para utilizar una tolerancia absoluta para las coordenadasx
ey
, a la vez que se ignora la coordenadaz
.
DS = [1 1 Inf]; [C,ia] = uniquetol(A, 0.3, 'ByRows', true, ... 'OutputAllIndices', true, 'DataScale', DS);
Promedie cada grupo de puntos que se encuentren dentro de la tolerancia (incluidas las coordenadas z
), para dar lugar a un conjunto de datos reducido que siga manteniendo la forma general de los datos originales.
for k = 1:length(ia) aveA(k,:) = mean(A(ia{k},:),1); end
Represente los puntos promediados resultantes en la parte superior de los datos originales.
hold on plot3(aveA(:,1), aveA(:,2), aveA(:,3), '.r', 'MarkerSize', 15)