더북(TheBook)

UNIT 30
합성 사인파 만들기

DATA SCIENCE FOR EVERYONE icon_day

 

데이터 과학자가 자주 하는 일은 아니지만, 인위적으로 사인(sine) 곡선을 만들어 numpy를 처음 들어 보는 친구들을 놀라게 해보자. 합성 사인 곡선은 주기적인 신호(signal)를 의미하며, 음역이 한정되어 있다면 저렴하고 시끄러운 악기로도 쉽게 만들 수 있다. 신호의 실제 출처나 악기 속성은 별로 중요하지 않다. 그것은 전기 콘센트에 꽂은 전압계라든지, 지난 일요일 밤에 마당 잔디 위에 두었다가 금요일에서야 확인한 야외용 디지털 온도계, 주식 시장의 가격 시세에서도 찾아볼 수 있다(여하튼 합성 사인 곡선으로 친구들을 놀라게 하는 것 말고도 새로운 디지털 신호 처리 알고리즘을 테스트할 수 있다).

이를 생성하는 코드는 다음과 같다. 코드 중간에 밑줄 그은 부분에서 numpy의 장점인 벡터 연산이 빛을 발한다. 연속적인 정수로 구성된 배열을 만들고는 이를 부동소수점 형태로 전환한다. 또 신호 길이를 맞추고, 사인 값을 추출하고, 확대하고 이동한 후 가우시안(Gaussian) 잡음(UNIT 45의 2절 ‘정규 분포’ 참고)을 더하고, 한정된 음역의 악기에서 뽑은 것처럼 결과를 알맞게 자른다.

 


* 가우시안 잡음 가우시안(평균을 중심으로 좌우 대칭인 종 모양) 히스토그램 형태의 잡음

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.