반응형

미분을 사용하여 사인 곡선과 노이즈 추가한 사인 곡선의 노이즈 양을 측정하는 파이썬 코드입니다.

 

2023. 6. 17  최초작성



import numpy as np
import matplotlib.pyplot as plt


np.random.seed(0)
x = np.linspace(0, 10, 100)
y = np.sin(x)
noise_y = np.sin(x) + np.random.normal(0, 0.3, size=x.size)

# 미분 값 계산
dy = np.gradient(y, x)
noise_dy = np.gradient(noise_y, x)

# 노이즈 체크 (값의 절대값의 평균)
noise_check_y = np.mean(np.abs(y))
noise_check_noise_y = np.mean(np.abs(noise_y))
noise_check_dy = np.mean(np.abs(dy))
noise_check_noise_dy = np.mean(np.abs(noise_dy))
print(f"Noise check value: (x,y) {noise_check_y}  (x,noise_y) {noise_check_noise_y}")
print(f"Noise check value: (x,dy) {noise_check_dy}  (x,noise_dy) {noise_check_noise_dy}")

fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, sharex=True)
ax1.plot(x, y)
ax1.set_title('x,y')
ax2.plot(x, dy)
ax2.set_title('x,dy')
ax3.plot(x, noise_y)
ax3.set_title('x,noise_y')
ax4.plot(x, noise_dy)
ax4.set_title('x,noise_dy')
plt.tight_layout()
plt.show()



실행해보면 미분값에 대한 절대값의 평균의 경우 두 곡선 사이에 값 차이가 있는 것을 볼 수 있습니다. 

 

Noise check value: (x,y) 0.6126037223766473  (x,noise_y) 0.6926406558667183

 

Noise check value: (x,dy) 0.6563262517704687  (x,noise_dy) 1.7194572843281686




 

반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts