칼만필터는 어렵지않아
내가 이 책을 봤던게 19년도 쯤이었던거 같은데
그때 정말 설명을 너무 친절하게 해주셔서 감탄하면서 봤었다
당시엔 matlab있으니까 그냥했는데
지금은 메트랩이 없엉
또 2판이 새로나오면서 파티클필터도 추가되기도 했고
이참에 파이썬으로 작성해봐야되겟다 싶엇는데 구현하게 됨
1. 볼트 값 가져오기
평균 필터 파트의 get volt는
직류분 14.4에다가
정규분포 노이즈로 4 * randn 사용
파이썬으로 구현하면 이럼
import numpy as np
def get_volt():
w = 0 + 4 * np.random.normal()
z = 14.4 + w
return z
print(get_volt())
2. 평균 필터와 테스트 로직 구현하기
메트랩 코드를 파이썬으로 만들다보니
persistent 때매 좀 지저분 해지긴했지만 동작은 잘된다
import matplotlib.pyplot as plt
def avg_filter(prev_avg, k, x):
if prev_avg == 0:
return x, 1
alpha = (k - 1) / k
avg = alpha * prev_avg + (1 - alpha) * x
k = k + 1
return avg, k
t = np.arange(0, 10, 0.2)
sample_num = len(t)
avg_list, xm_list = [], []
prev_avg, k = 0, 0
for _ in range(sample_num):
xm = get_volt()
xm_list.append(xm)
avg, k = avg_filter(prev_avg, k, xm)
prev_avg = avg
avg_list.append(avg)
plt.plot(t, xm_list, color="red", label="voltage")
plt.plot(t, avg_list, color="blue", label="filtered voltage")
plt.legend()
'컴퓨터과학 > 필터' 카테고리의 다른 글
칼만필터 파이썬 - 6. 칼만 필터를 이용한 추적기 구현 (0) | 2023.10.03 |
---|---|
칼만필터 파이썬 - 5. 칼만 필터를 이용한 위치로 속도 계산 (0) | 2023.10.02 |
칼만필터 파이썬 - 4. 단순 칼만 필터 구현 (0) | 2023.10.02 |
칼만필터 파이썬 - 3. 저주파 통과 필터 (0) | 2023.10.02 |
칼만필터 파이썬 - 2. 평균 이동 필터 (0) | 2023.10.02 |