MATLAB의 3 시그마 범위 외부의 상관 관계를 효율적으로 찾아 버리는 방법은 무엇입니까?
-
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) = [];
제휴하지 않습니다 StackOverflow