Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[MATLAB] 배열에서 이상치 제거 및 조건에 맞는 요소 찾기 본문

프로그래밍 Programming/매트랩 MATLAB

[MATLAB] 배열에서 이상치 제거 및 조건에 맞는 요소 찾기

보통의공대생 2023. 8. 9. 10:37

데이터의 차원이 높아질 수록 개별 데이터를 확인하는 것이 어렵고 필요없는 데이터를 제거하는 것이 어려워진다.

이를 위한 다양한 방법들을 알아보기로 한다.

 

 

 

1. 이상치 제거

배열에서 이상치를 제거하는 함수는 MATLAB에서 R2018b 이후부터 rmoutliers로 제공하고 있다.

이상값 감지는 평균에서 3 표준편차를 초과해 떨어져있는 요소를 기준으로 한다.

기준은 평균, 중앙값 등 기준을 다양하게 잡을 수 있다.

 

[B,TFrm,TFoutlier,L,U,C] = rmoutliers(kt_s_pred) ;
# L : 하한 임계값, U : 상한 임계값, C : 중심값, TFoutlier : 이상값 표시자, TFrm : 제거된 데이터

 

 

2. 조건에 맞는 요소 출력

 

B = A(A>0.0) # A배열에서 0.0보다 큰 원소들로 구성된 배열
a = sum( A>0.0 ) # A배열에 0.0보다 큰 원소들의 개수

 

$A>0.0$이라는 조건문 그 자체는 동일한 길이의 True(1), False(0)으로 나오기 때문에 이를 모두 더하면 조건을 만족하는 원소의 개수를 알 수 있다.

 

 

3. 조건에 맞는 요소의 인덱스 찾기

 

이 경우에는 find라는 함수를 사용할 수 있다.

 

find를 사용하더라도 조건에 맞는 값을 내뱉는 경우가 있고 인덱스를 출력하는 경우가 있다.

 

k = find(X<10,5) # X라는 행렬에서 10보다 작은 원소 5개 출력

[row,col] = find(X>0 & X<10,3) # 조건을 만족하는 원소의 행렬 번호 출력

 

 

꼭 MATLAB 함수가 아니어도 직접 구현도 쉽게 할 수 있는데 함수로 제공해주니 훨씬 편한 것 같다.

 


https://kr.mathworks.com/help/matlab/ref/find.html

 

0이 아닌 요소의 값이나 인덱스 찾기 - MATLAB find - MathWorks 한국

선형 인덱스는 단일 첨자 사용을 통해 배열의 요소를 참조할 수 있도록 합니다(예: A(k)). MATLAB®은 해당 배열을 각 열이 이전 열의 맨 아래에 추가된 단일 열 벡터로 처리합니다. 따라서 선형 인덱

kr.mathworks.com

https://kr.mathworks.com/help/matlab/matlab_prog/find-array-elements-that-meet-a-condition.html

 

조건을 충족하는 배열 요소 찾기 - MATLAB & Simulink - MathWorks 한국

이 예제의 수정된 버전이 있습니다. 사용자가 편집한 내용을 반영하여 이 예제를 여시겠습니까?

kr.mathworks.com

https://kr.mathworks.com/help/matlab/ref/rmoutliers.html?s_tid=doc_ta 

 

데이터에서 이상값을 감지하여 제거 - MATLAB rmoutliers - MathWorks 한국

입력 데이터의 이상값 위치에 해당하는 논리형 이상값 표시자를 선택적으로 반환할 수 있습니다. 또한 이상값 감지 방법이 사용한 하한 임계값과 상한 임계값, 중심값도 반환할 수 있습니다.

kr.mathworks.com

 

Comments