신호처리기초
python으로 정현파(sinusoid) 만들기
Graduhye
2020. 12. 14. 19:28
Real sinewave
import numpy as np
import matplotlib.pyplot as plt
def sinusoid(A, f0, phi, fs, t):
# 1/fs 간격으로
t=np.arange(0, t, 1.0/fs)
# 위 아래 둘중 아무거나 사용하면 됨
# 점 갯수를 fs개로
# t=np.linspace(0, t, int(fs))
x=A*np.cos(2*np.pi*f0*t*+phi)
return x
# 지속시간 t를 짧게 해야 구불구불이 보인다
sin_A=sinusoid(A=0.8, f0=440, phi=np.pi/2, fs=44100, t=0.005)
plt.plot(sin_A)
plt.xlabel("time")
plt.ylabel("amplitude")
plt.show()
A(라) 음의 sinewave를 살펴보자. 위의 코드를 실행시키면 아래와 같은 wave가 발생한다.
complex sinewave
import numpy as np
import matplotlib.pyplot as plt
N=32
#freq, 진동 수
k=5
n=np.arange(-N/2, N/2)
s=np.exp(1j*k*2*n*np.pi/N)
#Real
plt.xlabel("n")
plt.ylabel("amplitude")
plt.plot(n, np.real(s))# 허수부는 np.imag(s)
plt.show()
N = 샘플링 갯수
k = 진동 수
실수부 그래프를 그려보면 아래와 같다.