Contenido principal

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)

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

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)

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

Consulte también

Temas