04_mfc를 활용한 Fourier Series
C++/신호처리 프로젝트 mfc.ver

04_mfc를 활용한 Fourier Series

728x90

이번엔 Fourier Series를 구현하여 보았다. Fourier Series에대한 설명을 다하자면 복잡하기도 하고 해서 간단히 설명하고, 어떻게 구현했는지 설명해보도록 하겠다.

 

Fourirer Series를 이해하기위해선 Series들의 개념과, 여러 통신적 지식이 필요하지만, 정말정말 간단하게 설명하자면 사인,코사인그래프들의 합으로 특정 그래프를 나타낼수있다! 라는게 중요 핵심 개념이다.

 

 

이론설명은 간단히하고, 어떻게 구현했는지 알아보도록 하자.

 

ondraw함수에서

다음과 같이 총 6개의 디스플레이공간을 두고, 나오도록 구성했다.

 

Gen_signal

그리고 신호출력을 맡는 Gen_Signal클래스를 통하여 진폭,주파수,위상에 따른 값을 저장할 수있는 공간을 만들어줬다.

 

첫번재 신호 : 주파수 1 , 진폭 1, 위상 0

첫번째 신호를 보면 알겠지만, 두번째 신호는 진폭이 2, 주파수가 10으로 만들어주었고, 3번재 신호는 1번과 2번 신호를 더한 값이다.

 

1~3번 결과값

그래서 그래프를 보면, 각 헤르츠성분이 오른쪽에 표시된걸 알 수있고, 왼쪽에는 그에해당하는 그래프들이 나온것을 알 수있다.

 

4~6번신호

4~6번 신호는 아래 결과를 설명한 다음에 설명하겠다.

오른쪽에 있는 주파수성분을 다더하면 왼쪽처럼 나온다는 것을 알 수있다. 추가적인 지식으로말하자면, 모든 주파수의 값을 다 더하면 임펄스함수가 나오게 된다!! 하지만 실제로 모든주파수의 합은 구할 수없고, 내가 만든 프로그램에서의 전체 데이터 개수는 1024개로 잡아두었기 때문에 위처럼 나오게 된다.

 

참고로, 주기적인 rectangle신호를 출력해보고 싶었기에 위처럼 구현할 수 있었다.

 

 

728x90