Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión 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)

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 relacionados