2012-02-01 4 views
1

현재 matlab을 사용하여 대용량 데이터 세트 (40 000+ 데이터 포인트)를 분석하려고합니다. 이러한 데이터 세트는 높은 주파수의 노이즈를 많이 포함하지만 운좋게도 노이즈는 전체 신호에 비해 상대적으로 작은 진폭을 갖습니다.데이터 세트의 특정 특성을 찾는 알고리즘

기본적으로 내가하고 싶은 것은 데이터 세트가 "작동"하는 지점을 찾는 것입니다. 걷어차는 것만으로도 작은 영역에서 그 그라디언트가 크게 바뀝니다. 그러나, 분석하고있는 이러한 신호는 "킥 업"포인트 전에 신호 슬로프가 음수, 중성 또는 양성일 수있는 "드리프트"를 겪지 만, "킥"전후의 그래프의 모양 up "포인트는 일반적으로 동일합니다.

예 :에 "킥"점이이 같은 보일 것이다 :

[1.25 2.5 3.75 5 7.5 12 21 36 49 64]

분명히이 대규모 단순화 된 버전입니다하지만, 데이터는 곡선과 같은 직선을 따릅니다 (위의 처음 5 데이터 점). 그러면 곡선과 같이 더 지수 적입니다 (점 6 이상).

그래서 기계 유형을 배우는 알고리즘을 구현함으로써 matlab에 "kick up"지점과 "kick up point"가 어디에서 발생하는지 알려줄 수 있습니다. 정확하게 "킥 업"지점을 찾을 수 있습니다.

Matlab과 기계 학습에 비교적 새로운 점이 있습니다 (기계 학습이 내 문제를 해결하는 가장 좋은 방법이라면). 그리고 나는 어디에서 시작해야하는지 잘 모릅니다. 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바라고 있었고, MATLAB 코드 예제 및/또는 코딩 구현을위한 초보자 이론이 될 수 있습니다.

+0

기본 신호의 그래디언트 변경을 찾으십니까? 그렇지 않은 경우 노이즈가 있으면 그 곳 전체에서 "중요한"그래디언트 변경을 감지합니다. –

답변

4

저는 ML이 과도한 상황이라고 생각합니다. 데이터가 직선과 같은 곡선 상에 있다면, 그 파생물은 일정하다는 것을 의미하며, 이는 두 번째가 0이라는 것을 의미합니다. 따라서 diff을 두 번 사용하여 근사 2 차 미분을 계산하고 임계 값 이상이되는 부분을 찾으십시오. 이 임계 값은 0에 가깝습니다.

x = [ 1.25 2.5 3.75 5 7.5 12 21 36 49 64 ]; 
plot(diff(diff(x))); 
+2

답을 추가하려면 기본적으로 가속도가 어느 수준 이상으로 올라가는 지점을 찾아내어 해당 지점의 신호의 전반적인 수준과 비교하여 잡음을 고려해야합니다. –

관련 문제