C++/신호처리 프로젝트 mfc.ver

    05_mfc를 이용한 Fourier Transform

    우선, 전체적인 프로그램 틀은 저번 Fourier Series에서 사용했던 프로그램에서 메뉴를 추가한 방식으로 추가했다. 위 식이 Fourier Transform 식이다. 위식을 Fourier Transform 클래스를 새로 만들어서 구현해보았다. void FourierTransform::Foruiertransform() { double m_Real, m_Image; double T_Real, T_Image; for (int fre = 0; fre < 1024; fre++) { T_Real = T_Image = 0; for (int n = 0; n < 1024; n++) { m_Real = m_InFTData[n] * cos(2 * Pi * fre * n / 512); m_Image = m_InFTDat..

    04_mfc를 활용한 Fourier Series

    이번엔 Fourier Series를 구현하여 보았다. Fourier Series에대한 설명을 다하자면 복잡하기도 하고 해서 간단히 설명하고, 어떻게 구현했는지 설명해보도록 하겠다. Fourirer Series를 이해하기위해선 Series들의 개념과, 여러 통신적 지식이 필요하지만, 정말정말 간단하게 설명하자면 사인,코사인그래프들의 합으로 특정 그래프를 나타낼수있다! 라는게 중요 핵심 개념이다. 이론설명은 간단히하고, 어떻게 구현했는지 알아보도록 하자. ondraw함수에서 다음과 같이 총 6개의 디스플레이공간을 두고, 나오도록 구성했다. 그리고 신호출력을 맡는 Gen_Signal클래스를 통하여 진폭,주파수,위상에 따른 값을 저장할 수있는 공간을 만들어줬다. 첫번째 신호를 보면 알겠지만, 두번째 신호는 진폭..

    03_mfc를 활용한 correlation

    이번에는 correlation을 mfc를 활용하여 구현하여 보았다. 신호발생 코드는 이전글들과 같고, Correlation 클래스를 따로 코딩을 해서 구현을 해보았다. Correlation 수식을 이용하여 구현하면 간단하게 구현해볼 수 있다. 자기상관 함수와, 상호상관 함수 모두 구현해 보았다. correlation 파일 용량이 크기에 올릴수는 없을거 같고 혹시 필요하시면 메일을 적어드리면 보내드리겠다. 잡을을 자기상관으로 두면, 위처럼 0인구간에서는 1의 값이 나오고, 다른 값에서는 거의 0에 인접한 값이 나옴을 알 수 있다. 이는 자기상관이기에 모든 상관도가 같은 0인지점말고의 상관성이 0이라는 의미이다. 즉, 위처럼 서로다른 백색잡음을 하면, 0에서 특정값이 아닌, 모두가 파형이 튀는것을 알 수 있..

    02_mfc를 활용한 convolution

    - convolution을 클래스로 만들어서 구현한다.. 라는 주제로 mfc를 활용하여 진행하였다. 핵심 코드 Convolution.h Convolution 클래스의 헤더파일 부분이다. 변수로 Yn을 두었으며, Xn,Hn을 인자로 받는 Convolution함수를 구현하였다. Convolution. cpp Convolution 클래스의 cpp파일이다. Xn,Hn을 인자로 받아 Yn에 컨볼루션된 값을 집어넣었다. 이벤트 처리기를 통한 컨볼루션 버튼을 눌렀을때의 코드이다다. 컨볼루션 했을 때 다른 그래프를 넘어가는 부분이 발생하여 규격에 맞게 Yn을 비율을 맞춰주는 부분을 추가하였다. 위의 그림처럼 만들어준셈. 왼쪽은 OnDraw 함수에서의 구현이다. Xn을 첫째줄, Hn을 둘째줄, Yn을 셋째줄에 나오도록 ..

    01_mfc를 이용한 신호의 파형출력

    - Sin,Cos,Sinc 등 그래프들을 mfc를 이용하여 그리고 sampling time, 양자화, 데이터 개수 등의 개념을 이해한다. 문제 1 문제 설명 Sa(t) 와 Sinc(t) 가 0일 때 어떻게 되는지 설명하고 프로그램 상에서 구현할 때 어떻게 되는지 설명하시오 이론전개 로피탈 성질을 이용하면 이론적으로 sin(t)와 Sa(t)함수의 0일때의 값을 알 수 있다. 하지만 프로그램상에서 이를 컴퓨터로 계산하면 아래와 같은 답이 나온다. 왼쪽 값은 sinc함수의 값을 직접 뽑아내는 코드를 입력하여 해본 값이다. 0일때의 값은 완전히 나오지 않는다는 것을 알 수 있다. 즉, 프로그램상에서 이를 구현하기 위해서는 임의로 0일때의 값을 넣어주던지, sampling time을 작게 잡아서 촘촘하게 추출해내..