내 프로젝트에서 알고리즘으로 계산 된 20.000 점의 표면이 있습니다. 이 알고리즘은 때로는 작은 영역에서 1 개 이상의 점을 잘못 계산하여 오류가 발생합니다.균질 표면에서 잘못된 점을 감지하십시오.
이 오류는 알고리즘에서는 해결할 수 없지만 나중에 검색해야합니다.
오류는 다음 그림에서 볼 수:
당신이 볼 수 있듯이이 잘못뿐만 아니라 전체 균일 한 표면을 나누기뿐만 아니라의 aestetics을 파괴한다는 계산 된 포인트가 플롯 (프로젝트에서도 중요 함)
때로는 포인트 이상일 수 있지만 일반적으로 5 또는 6을 초과 할 수 없습니다. 오류는 항상 Z 축이므로 X 및 Y를 확인할 필요가 없습니다
I 이 poitns를 감지하기 위해 약간의 "일반적인"알고리즘을 찾기 위해 내 마음을 압박하고있다. 아마도 나는 표면의 패치를 취하고 Z를 의미하는 것을 추측하고, 그 다음 분산의 포인트를 찾아 낼 것입니다 ...하지만 나는 그것이 항상 작동 할 것이라고 생각하지 않습니다.
아이디어가 있으십니까?
참고 : 나는 누군가가 나를 위해 단지 아이디어를 코드를 작성 싶지 않다.
PD 다음 avobe 이미지에 대한 관련 코드는 : 귀하의 기능 이후
[x,y] = meshgrid([-2:.07:2]);
Z = x.*exp(-x.^2-y.^2);
subplot(1,2,1)
surf(x,y,Z,gradient(Z))
subplot(1,2,2)
Z(35,35)=Z(35,35)+0.3;
surf(x,y,Z,gradient(Z))
이것은 꽤 좋은 것처럼 보인다. 아프지 만 다시 시도하자. –
좋은 답변이지만 'cumsum'은 동일한 열에 두 개의 연속 된 특이 값으로 작동하지 않습니다. 또한 '10 '은 다소 임의적입니다. 적어도 '3'은 p 값 ~ 0.001에 해당하는 표준 숫자입니다. OP를위한 수동 프로세스 인 경우이 번호를 항상 변경하여 더 많거나 적은 이상 치를 찾을 수 있습니다. – Bee
동일한 열에서 두 개의 연속 된 특이 값에 대해 정상적으로 작동합니다. 'Z (35,36,35) = Z (35 : 36,35) +0.3;을'Z (35 : 36,35) + 0.3으로'변경하고 테스트하십시오. –