728x90
반응형
SMALL
이동 평균 필터 (Moving average filter)
이동 평균 필터는 2 이상의 연속된 데이터 (입력 값)에서 인접한 n개 데이터의 평균을 구하여 순차적으로 계산해내는 평균화 방법을 말한다.
예제
import numpy as np
# 이동평균 필터의 크기
window_size = 5
# 원본 데이터
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 이동평균 필터링
filtered_data = np.convolve(data, np.ones(window_size) / window_size, mode='same')
# 필터링된 데이터 출력
print(filtered_data)
[3. 4. 5. 6. 7. 8. 9.]
import numpy as np
import matplotlib.pyplot as plt
from scipy import io
input_mat = io.loadmat('sample.mat')
def get_data(i):
z = input_mat['sig'][i]
return z
def mov_avg_filter(x_n, x_meas):
n = len(x_n)
for i in range(n-1):
x_n[i] = x_n[i+1]
x_n[n-1] = x_meas
x_avg = np.mean(x_n)
return x_avg, x_n
n = 10
n_samples = 500
time_end = 10
dt = time_end / n_samples
time = np.arange(0, time_end, dt)
x_meas_save = np.zeros(n_samples)
x_avg_save = np.zeros(n_samples)
for i in range(n_samples):
x_meas = get_data(i)
if i == 0:
x_avg, x_n = x_meas, x_meas * np.ones(n)
else:
x_avg, x_n = mov_avg_filter(x_n, x_meas)
x_meas_save[i] = x_meas
x_avg_save[i] = x_avg
plt.plot(time, x_meas_save, 'r*', label='Measured')
plt.plot(time, x_avg_save, 'b-', label='Moving average')
plt.legend(loc='upper left')
plt.title('Measured Altitudes v.s. Moving Average Filter Values')
plt.xlabel('Time [sec]')
plt.ylabel('Altitude [m]')
plt.show()
728x90
반응형
LIST
'Signal Processing' 카테고리의 다른 글
Mel Spectrogram (0) | 2023.09.13 |
---|---|
Welch's Method (0) | 2023.08.23 |
Wavelet 변환 (0) | 2022.04.19 |
Use of AR Models to Estimate Spectra (0) | 2022.04.13 |
AR Model Order Estimation (0) | 2022.04.13 |