반응형
평균 : 데이터의 총합을 개수로 나눈 값
배치식 : 데이터를 한번에 계산하는 식
아래는 평균의 배치식입니다.
재귀식 : 이전의 결과를 재사용하는 식
(계산 효율이 좋음. 위 식과 아래식의 연산자 개수를 비교해보자
위 식은 +연산자가 k 개인 반면, 아래식은 1개 뿐이다!)
Matlab 코드
clear all
dt = 0.2;
t = 0:dt:10;
Nsamples = length(t);
Avgsaved = zeros(Nsamples, 1);
Xmsaved = zeros(Nsamples, 1);
for k=1:Nsamples
xm = GetVolt();
avg = AvgFilter(xm);
Avgsaved(k) = avg;
Xmsaved(k) = xm;
end
figure
plot(t, Xmsaved, 'r:*');
hold on
plot(t, Avgsaved, 'o-');
legend('Measured', 'Average');
function avg = AvgFilter(x)
persistent prevAvg k
persistent firstRun
if isempty(firstRun)
k = 1;
prevAvg = 0;
firstRun = 1;
end
alpha = (k - 1) / k; % 이전/현재 (데이터수)
avg = alpha*prevAvg + (1 - alpha)*x; % 현재 평균
prevAvg = avg;
k = k + 1;
end
function z = GetVolt()
w = 0 + 4*randn(1,1);
z = 14.4 + w;
end
코드 설명
1-2 예제를 코드화 한 것으로
14.4 V 에서 4*정규분포 만큼의 잡음을 가지는 모델을 나타낸 것입니다.
따라서 표본이 충분히 많으면 14.4로 수렴하는 결과를 나타냅니다.
- randn(1,1) :
행(x) : 1개
열(y) : 1개
를 가지는 정규분포를 생성하는 함수 입니다. - persistent :
C/C++ 에서 static 과 같이 정적 변수로 설정하여
함수를 벗어나도 해당 값이 유지됩니다.
반응형
'others > 수학 (기본기)' 카테고리의 다른 글
푸리에 변환 - 구형파(사각형 펄스) <-> sinc 함수 (0) | 2022.09.15 |
---|---|
Sinc 함수 (sinc function).. 뭐하는 놈이냐? (0) | 2022.09.15 |
복소 상호 상관(cross correlation), conjugate 하는 이유 (0) | 2022.08.29 |
칸아카데미 - 사인 덧셈정리 증명 (0) | 2021.06.23 |
tan(-theta) = -tan(theta) 대칭성 증명 (0) | 2021.06.20 |