2010-05-13 2 views
0

컨텍스트 : iPhone CLLocationManager에서 반환 한 값을 개선하려고합니다. 일반적으로 적용 할 수있는 문제이기는하지만. 핵심은 CLLocationManger가 고정 된 샘플 속도가 아닌 현재 속도로 데이터를 반환한다는 것입니다.임의의 시간에 필터 값 가져 오기

I의 정확성을 개선하기 위해 피드백 방정식을 사용하려는 currentVelocity가 didUpdateToLocation 의해 반환 속도

v=(k*v)+(1-k)*currentVelocity

: fromLocation : V는 출력 속도 (그리고 또한 상기 피드백 요소를 사용). fromLocation : 때문에 "같은 때"didUpdateToLocation 자연의

내가 마지막으로 호출 된 이후의 시간 간격을 계산하고 일하는 것이

for (i=0;i<timeintervalsincelastcalled;i++) v=(k*v)+(1-k)*currentVelocity

같은 일을하지만, 낭비 수 의 사이클. 특히 나는 아마 timeintervalsincelast가 10 분의 1 초로 측정되기를 원할 것입니다.

루프없이 이것을 해결할 수있는 방법이 있습니까? 즉, 수식을 재 작업 (? 통합)하여 방정식에 간격을 넣고 반복을 통해 얻은 것과 동일한 대답을 얻으십시오.

+0

저는 mathoverflow를 살펴 봤습니다.이 질문은 높은 수준의 수학 질문보다 * 많은 프로그래밍 문제로 보입니다.하지만이 질문에 더 적합한 포럼이 있다면 나는 포인터를 수신하게되어 기쁩니다. 그것에! – Andiih

답변

1

을 당신이 another SO question에서 답을 적용 할 수 있습니다

v = k*vCurrent + (1-k)*v

으로 원래의 방정식을 작성하는 경우.

+0

최고! 감사합니다 mtrw Logged – Andiih

1

반복하는 대신 간격의 크기에 따라 k 값을 선택할 수 있습니다. 예를 들어 간격 길이가 1 시간이면 0을 원할 것입니다.

반복이 제공하는 것과 동일한 대답을주기 위해 다양한 간격 크기에 대해 k를 사전 계산하는 것이 쉬울 것입니다. 그냥 iterating (당신은 이미 그것에 대한 코드가)에 의해 변경을 계산하고 다음 대수적으로 줄 것이다 k의 값을 계산합니다.

값 비싼 계산 대신 조회 값 표를 사용하는 것은 일반적인 프로그래머 제다이 트릭입니다. (가, 지금 내 대답은 코드와 함께 할 수있는 뭔가가!)

+0

현명한,하지만 mtrw의 답변 승 :-) 당신은 대답을 한 주 기다려 다음 두 번에 와서! – Andiih