Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

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 [-3,3]×[-3,3] 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 como true, ya que las filas de A contienen las coordenadas de los puntos.

  • Especifique OutputAllIndices como true 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 coordenadas x e y, a la vez que se ignora la coordenada z.

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)

Consulte también

Temas relacionados