MATLAB의 3 시그마 범위 외부의 상관 관계를 효율적으로 찾아 버리는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1728709

  •  19-09-2019
  •  | 
  •  

문제

데이터 파일이 있습니다 m.txt 그것은 다음과 같은 것 같습니다 (훨씬 더 많은 포인트가 있음) :

286.842995
3.444398
3.707202
338.227797
3.597597
283.740414
3.514729
3.512116
3.744235
3.365461
3.384880

일부 값 (같은 338.227797) 이다 매우 다릅니다 내가 일반적으로 기대하는 값 (작은 숫자)에서.

  • 그래서 나는 외부에있는 모든 지점을 제거 할 것이라고 생각하고 있습니다. 3-sigma range. Matlab에서 어떻게 할 수 있습니까?

  • 또한 더 큰 문제는이 파일에 별도의 파일이 있다는 것입니다. t.txt 이 숫자의 해당 시간 값을 저장하는 IT와 관련이 있습니다. 따라서 해당 시간 값을 t.txt 파일도.

나는 아직도 Matlab을 배우고 있으며, 이것을 수행하는 좋은 방법이 있다는 것을 알고 있습니다 (제거 된 요소의 지수를 저장하는 것보다 낫습니다. m.txt 그런 다음 해당 요소를 제거합니다 t.txt 파일)

도움이 되었습니까?

해결책

@Amro는 가깝지만 찾기는 불필요하며 (논리적 구독을 찾아보십시오) True +/- 3 Sigma 범위에 대한 평균을 포함해야합니다. 나는 다음과 함께 갈 것입니다.

%# load files 
m = load('m.txt'); 
t = load('t.txt'); 

%# find values within range
z = 3;
meanM = mean(m);
sigmaM = std(m);
I = abs(m - meanM) <= z * sigmaM;

%# keep values within range
m = m(I);
t = t(I); 

다른 팁

%# load files
m = load('m.txt');
t = load('t.txt');

%# find outliers indices
z = 3;
idx = find( abs(m-mean(m)) > z*std(m) );

%# remove them from both data and time values
m(idx) = [];
t(idx) = [];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top