02_mfc를 활용한 convolution
C++/신호처리 프로젝트 mfc.ver

02_mfc를 활용한 convolution

728x90

- convolution을 클래스로 만들어서 구현한다.. 라는 주제로 mfc를 활용하여 진행하였다.

핵심 코드
Convolution.h




Convolution 클래스의 헤더파일 부분이다. 변수로 Yn을 두었으며, Xn,Hn을 인자로 받는 Convolution함수를 구현하였다.

Convolution. cpp



Convolution 클래스의 cpp파일이다. Xn,Hn을 인자로 받아 Yn에 컨볼루션된 값을 집어넣었다.



이벤트 처리기를 통한 컨볼루션 버튼을 눌렀을때의 코드이다다. 컨볼루션 했을 때 다른 그래프를 넘어가는 부분이 발생하여 규격에 맞게 Yn을 비율을 맞춰주는 부분을 추가하였다.


위의 그림처럼 만들어준셈.

왼쪽은 OnDraw 함수에서의 구현이다.
Xn을 첫째줄, Hn을 둘째줄, Yn을 셋째줄에 나오도록 설정하였다.
실행결과
신호발생 구현 Xn = impulse Hn = impulse
Xn = impulse Hn = sin1Hz Xn = sin10Hz Hn = impulse
Xn = sin1Hz Hn = sinc Xn = cos1Hz Hn = sin10Hz

 

정리
임펄스 함수를 입력값으로 넣어주면 Hn의 함수가 그대로 Yn으로 나오기 때문에 Hn을 알 수 있다.


이는 XnHn이 바뀌어도 같은 값이 나타난다.
서로 다른주파수의 sin,cos끼리 컨볼루션을 할 경우 컨볼루션 결과가 각 헤르츠 성분이 실려서 나오는 것을 확인할 수 있다.

 

 

728x90