2014-09-21 2 views
0

내가 가진 온도 데이터를 보간하는 데 문제가 있습니다. 계기 드리프트로 인해 시간 변수가 비담 상적으로 증가합니다. 예를 들어, 정확한 시간에 시작하여 프로그래밍 된대로 40 초마다 샘플링합니다.matlab에서 비 모노톤 x 데이터를 보간

YYYY MM DD HH MM SS 
2013 9 29 17 0 1 
2013 9 29 17 0 41 
2013 9 29 17 1 21 
2013 9 29 17 2 1 
2013 9 29 17 2 41 
2013 9 29 17 3 21 
2013 9 29 17 4 1 
2013 9 29 17 4 41 
2013 9 29 17 5 21 
2013 9 29 17 6 1 
2013 9 29 17 6 41 
2013 9 29 17 7 21 
2013 9 29 17 8 1 

그러면 시간이 지남에 따라 아래와 같이 다른 시간대로 천천히 표류합니다. 즉, 더 무작위 타이밍에서

2013 11 3 19 0 45 
2013 11 3 19 1 25 
2013 11 3 19 2 5 
2013 11 3 19 2 45 
2013 11 3 19 3 25 
2013 11 3 19 4 5 
2013 11 3 19 4 45 
2013 11 3 19 5 25 
2013 11 3 19 6 5 

최악의, 기기의 배터리 수명에 가까운, 그것은 샘플.

2013 11 19 0 14 0 
2013 11 19 0 15 28 
2013 11 19 0 16 56 
2013 11 19 0 18 24 
2013 11 19 0 19 52 
2013 11 19 0 21 20 
2013 11 19 0 22 48 
2013 11 19 0 24 16 
2013 11 19 0 25 44 
2013 11 19 0 27 12 
2013 11 19 0 28 40 
2013 11 19 0 30 8 
2013 11 19 0 31 36 
2013 11 19 0 33 4 
인해 매일 온도 변화에 예상대로 내가 FFT와 매트랩 PSD 분석이 데이터를 사용하면 현재 내가 PSD의 모든 피크를 얻을 수 없기 때문에 매 2 분 보간이 데이터를 사용하여 같은 것입니다

.

내 데이터는 내가 보여준 datevectors의 datenum()에 있으므로 매 2 분마다 (0.0014 datenum마다) 새로운 Yi를 얻기 위해 아래 코드를 사용했습니다.

xi=(x(1,1):0.0014:x(end,1)); 
yi=interp1(x,y,xi); 

여기서 x는 datenum 벡터입니다.

735506.708344907 
735506.708807870 
735506.709270833 
735506.709733796 
735506.710196759 
735506.710659722 
735506.711122685 
735506.711585648 
735506.712048611 
735506.712511574 

와 y마다 샘플과 같이되어 온도 데이터이며,

32.4086025192727 
32.4052088117713 
32.4051005865126 
32.4043088697477 
32.4049974142611 
32.4046963702913 
32.4038950877519 
32.4047969012421 
32.4055051003980 
32.4062010783006 

나는 당신의 도움은 어떻게 든 세트 2 분 간격 데이터에 온도 데이터를 보간 얻을시겠습니까? 이 문제를 해결하기위한 도움과 안내를 부탁드립니다. 정말 고맙습니다. 내 데이터에 대한 정중하게, 아야

+0

나는 당신의 접근 방식에 어떤 문제도 보이지 않습니다. 이건 괜찮아. 'xi'와'yi'에 대해 얻는 결과에 어떤 문제가 있습니까? – Hoki

+0

안녕하세요, 나는이 데이터 세트에 많은 문제가 있음을 알았습니다. 필자는 그것을 정렬하고 fillgaps.m에있는 NaN을 제거한 다음 그것을 보간 할 수있었습니다! 그 점을 지적 해 주셔서 감사합니다. 그것은 제가 깨닫지 못했던 interp1() 전에 고정 될 필요가있는 작은 것들을 깨닫는데 도움이되었습니다. 'A_sorted = sortrows (A)''A_f = fixgaps (A_sorted)''[C, ia, ic] = 유일하다 (A_f); A_ia = A_f (ia, :)' – Aya

+0

잘 처리해 주셨습니다. 실제로 처리하기 전에 데이터를 '정리'해야하거나 이상한 결과가 발생할 수 있습니다. 문제를 어떻게 분류했는지에 대한 답을 작성하고 수락 할 수 있습니다. 그 질문을 닫습니다. – Hoki

답변

1

, 나는 내가 출산() interp1 수 있기 전에 시계열을 청소했다. 필자가해야 할 일이 있습니다. 정렬, 간격 채우기 (NaN), 시간 샘플 당 하나의 측정 만 있습니다.

A_sorted=sortrows(A); 
A_f=fixgaps(A_sorted); 
[C,ia,ic]=unique(A_f); 
A_ia=A_f(ia,:)