본문 바로가기

신호처리기초

python으로 정현파(sinusoid) 만들기

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 = 진동 수

 

실수부 그래프를 그려보면 아래와 같다.