도구스학업·수학

1차원 칼만 필터 계산기

잡음 섞인 측정값을 하나씩 넣어 칼만 필터의 추정값과 오차분산이 어떻게 수렴하는지 걸음마다 보여줍니다. 칼만 이득이 「측정을 얼마나 믿을지」의 저울이라는 것을 과정잡음·측정잡음을 바꿔 가며 직접 확인할 수 있습니다.

공백이나 쉼표로 나눠 적습니다. 2000개까지.

참값이 걸음마다 얼마나 흔들리는가

재는 기계가 얼마나 엉성한가

측정 10번 뒤의 추정값

9.381818

오차분산은 0.363636입니다. 측정이 쌓일수록 추정이 확실해져 이 값이 줄어듭니다.

마지막 추정값9.381818
마지막 오차분산0.363636
마지막 칼만 이득0.090909
정상상태 이득 (닫힌 식)0 (Q = 0이면 0으로 내려갑니다)
측정값의 단순 평균10.32
누적 평균과 같은지정확히 같습니다
지금 설정에서는 칼만 필터가 누적 평균과 정확히 같습니다. Q = 0(참값이 고정)이고 P₀ = R(처음 추정을 측정 한 번만큼 믿음)이면 걸음마다의 추정값이 (처음 추정 + 측정들) ÷ (개수+1)이 됩니다. 원리가 다른 두 계산이 딱 맞아떨어지는 자리라, 구현이 맞는지 확인하기에도 좋습니다. Q를 키워 보면 갈라집니다.

걸음마다

k측정 z예측 x⁻이득 K추정 x분산 P
11000.500052
21250.33337.33331.3333
397.33330.25007.751
4117.750.20008.40.8
510.58.40.16678.750.6667
69.58.750.14298.85710.5714
710.28.85710.12509.0250.5
889.0250.11118.91110.4444
9138.91110.10009.320.4
10109.320.09099.38180.3636

한 걸음이 두 부분입니다. 예측에서 x⁻ = x, P⁻ = P + Q로 두고, 보정에서 K = P⁻/(P⁻+R)을 구해 x = x⁻ + K(z − x⁻), P = (1−K)·P⁻로 고칩니다. 보정식은 「예측과 측정을 K : (1−K)로 섞는다」와 같은 말입니다.

칼만 이득 하나가 저울입니다. 측정잡음 R이 크면 이득이 작아져 예측을 붙들고, 과정잡음 Q가 크면 이득이 커져 측정을 따라갑니다. 위에서 R을 100으로 올려 보면 이득이 0.01 언저리로 떨어지고, 0.01로 낮추면 0.99까지 올라갑니다 — 같은 측정값인데 결과가 완전히 달라집니다.
이 도구는 상태가 하나뿐인 가장 단순한 꼴입니다. 위치와 속도를 함께 추정하는 것 같은 여러 상태 모형은 행렬로 다뤄야 하며 여기서는 다루지 않습니다. edu/moving-average는 최근 몇 개만 평균 내는 것이라 「오래된 것의 무게가 줄어든다」는 점은 닮았지만, 잡음의 크기를 근거로 비율을 스스로 정하지는 않습니다.

계산 방법

  1. 1측정값을 공백이나 쉼표로 나눠 적습니다.
  2. 2처음 추정값과 그 오차분산을 정합니다.
  3. 3과정잡음 Q와 측정잡음 R을 정합니다.
  4. 4걸음마다 칼만 이득과 추정값이 어떻게 변하는지 표에서 봅니다.
  5. 5Q를 0으로 두고 P₀를 R과 같게 하면 누적 평균과 같아지는 것을 확인합니다.

자주 묻는 질문

잡음 섞인 측정값에서 참값을 어림하는 방법입니다. 한 걸음이 예측과 보정 두 부분으로 되어 있어, 「지금까지의 추정으로 예측한 값」과 「방금 들어온 측정값」을 적당한 비율로 섞습니다. 1960년 루돌프 칼만이 내놓았고 아폴로 계획의 항법에 쓰인 것으로 유명합니다.

예측과 측정을 섞는 비율입니다. 0과 1 사이의 값으로, 1이면 측정을 그대로 믿고 0이면 측정을 아예 무시합니다. 측정잡음 R이 크면 이득이 작아져 예측을 붙들고, 과정잡음 Q가 크면 이득이 커져 측정을 따라갑니다 — 이 저울 하나가 칼만 필터의 전부라고 해도 됩니다.

Q는 과정잡음으로 참값 자체가 걸음마다 얼마나 흔들리는지이고, R은 측정잡음으로 재는 기계가 얼마나 엉성한지입니다. 참값이 고정돼 있다고 보면 Q = 0이고, 참값이 움직이는 것을 좇으려면 Q를 키웁니다.

Q = 0이고 처음 오차분산을 R과 같게 두면 칼만 필터는 누적 평균과 정확히 같은 값을 냅니다. 다른 점은 Q를 키울 수 있다는 것입니다. Q가 크면 오래된 측정의 무게가 저절로 줄어 움직이는 값을 좇을 수 있습니다 — 평균으로는 할 수 없는 일입니다.

측정이 쌓일수록 추정이 확실해지기 때문입니다. 다만 Q > 0이면 매 걸음 예측 단계에서 Q만큼 다시 커지므로, 어떤 값 아래로는 내려가지 않고 정상상태에 머뭅니다. 그 값은 Q와 R로부터 닫힌 식으로 구할 수 있습니다.

예측 분산 p가 p² − Qp − QR = 0을 만족하는 값으로 수렴하고, 이득은 p/(p+R)입니다. 걸음을 충분히 돌리면 실제 이득이 이 값에 붙는 것을 이 도구에서 확인할 수 있습니다. 이득이 상수로 수렴하므로 실무에서는 아예 이 값을 고정해 쓰기도 합니다(정상상태 칼만 필터).

전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고, 입력한 측정값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 정답지는 누적 평균입니다. Q = 0이고 처음 오차분산을 R과 같게 두면 걸음마다의 추정값이 (처음 추정 + 측정들)/(개수+1)과 정확히 같아야 합니다. 원리가 겹치지 않는 두 계산이라 서로를 검산합니다.
  • P₀가 R과 다르거나 Q > 0이면 평균과 갈라지는 것도 함께 검사합니다. 「언제나 평균과 같다」가 아니라 「이 조건에서만 같다」라는 것이 요점입니다.
  • 두 번째 정답지는 정상상태 이득의 닫힌 식입니다. 500걸음을 돌린 실제 이득이 p² − Qp − QR = 0의 양의 근으로 계산한 값과 소수점 여덟 자리까지 같은 것을 네 가지 (Q, R)에서 확인했습니다.
  • 칼만 이득이 언제나 0과 1 사이인 것, R이 크면 작아지고 Q가 크면 커지는 것, Q = 0이면 1/(n+1)로 내려가는 것을 검사값으로 고정했습니다.
  • 오차분산이 Q = 0일 때 단조롭게 줄고, Q > 0일 때는 정상상태 값 아래로 내려가지 않는 것도 확인합니다.
  • 잡음 만들기는 씨앗을 고정한 xorshift와 박스–뮐러 변환을 씁니다. 같은 씨앗이면 같은 측정열이 나오므로 결과를 다시 만들 수 있습니다.
  • 이 도구는 상태가 하나뿐인 가장 단순한 꼴(F = 1, H = 1)입니다. 위치와 속도를 함께 추정하는 것 같은 여러 상태 모형은 행렬로 다뤄야 하며 여기서는 다루지 않습니다.
  • 측정값은 2,000개까지 다룹니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.