이틀에 걸쳐서 완성했습니다.

C# 이란 프로그램이 객체 지향으로 굉장히 쉽고도 강력한 기능을 제시해 준다고 하여 공부를 시작했었지요 ㅋ

사실 Labview 라는 강력한 프로그램이 있고, 신호처리 부분에서도 Matlab 이라는 강력한 프로그램이 있기에 크게 도움이 되지는 않을거라고 생각했었지만 윈도우 프로그래밍도 하나정도 할줄 알면 큰 도움이 될것이라는 생각에서 시작했었습니다.

어느정도 되었다고 생각하고 자체 프로젝트를 진행하기로 마음먹고
무엇을 할까? 하다가 Radix-4 FFT 를 구현해서 그래프로 표현해 주는 프로그램을 만들기로 하였습니다.

위에서 언급한 프로그램들이 있다면 내장함수를 이용해서 간단하게 실험해 볼수 있지만, 사용하지 않으시는 다른 분야의 연구자들은 간단한 주파수 분석을 하여 주파수 분포가 어느쪽에 대략적으로 위치하는지 확인해 보고 싶으신 경우가 있을것이라고 생각했습니다 ㅋ

사실 저도 머 학부때 위의 프로그램들을 잘 사용하던 것은 아니였으니까요 ㅋㅋㅋ

그리고 가장 큰 생각은!! ㅋㅋ

혹시나 Radix 4 FFT 구현해 오라고 숙제 내주시는 교수님들 때문에 네이버 검색하다가 이 홈페이지에 들어오게 되지 않을까 하는 나의 바램? ㅋㅋ
(굉장히 조회수에 신경쓰는 멘트네 ㅋㅋㅋ)


ㅋㅋ

여튼 일단 사진 부터 ㅋㅋ



대충 요로코롬 생겼답니다 ㅋㅋ

사실 제가 처음이 C++ 로 이것을 구현했을 때는 FFT 포인트수가 높아질 때 발생하는 Stack Overflow 를 막기 위해서 메모리를 할당하고 사용하였어요 ㅋㅋ

무적의 함수 malloc ! ㅋㅋ

근데 C# 에서 가비지 컬렉션 개념이 도입되면서 new 라는 명령어로 배열에 heap 메모리를 할당해 주어야 한답니다 ㅋ

사실 배열로 해도되고 List 로 해도되고 ㅋ

뭐 여타 컬렉션을 아무거나 사용해도 문제는 없지요 ㅋ

근데 여기서는 배열로 한번 해보았어요 ㅋ 배열을 사용하는 방법이 기존의 C 에서 선언하고 사용하던것과 는 달라서 연습좀 해볼려고 ㅋㅋ

또 문제는 typedef 가 안된다는것 ㅋㅋ

struct 로 선언해놓고 typedef 처럼 사용할수 있어용 ㅋㅋ 자세한거는 나중에 C# 강의에서 설명해드릴게요 ㅋ

간단하게 말씀드리자면 #define 문을 C# 에서 사용하고 싶으면 Constants 와 같은 클래스를 하나 생성해 놓고
Constants.(  ) 라는 식으로 #define 문을 대신 할 수 있습니다.

Decimation In TIme 방식으로 구현했는데요 저는 재귀함수 콜 형태로 구현했어요 ㅋ

아래에 올려드리는 것은 Radix4 FFT 의 핵심이라할수 있는 부분이지요 ㅋ

Twiddle Factor 를 구해서 값들을 구해가는 알고리즘 ㅋ
자세한것은 이것또한 나중에 DSP 부분 포스팅에서 알려드릴게요 ㅋ



아나 하나도 안보이네 제길 ㅋㅋㅋ

아래는 제가 배포하는 설치 화면 ㅋㅋ



요래요래 설치를 하면 요론 아이콘이 나오지요 ㅋㅋ


ㅋㅋㅋ 아이콘 예뿌네 ㅋㅋㅋ

아래는 설치파일 ㅋㅋ

필요하거나 궁금하신 분을 한번 설치해서 써보세요 ㅋㅋ


test 파일은 제가 코사인 함수파형 저장해 놓은것 ㅋㅋ


아 쓰다보니까 생각이 나네 ㅋㅋ

FFT 포인트 수 바꾸면 안될수도 있을듯 ㅋㅋ 이거 한다면서 하다 말았군 ㅋㅋㅋ
하지만 1024 포인트는 무조건 동작함 ㅋㅋ

나중에 필요한 사람들이 있다고 하면 시간날때 한번 업데이트 버젼을 배포해야겠군 ㅋㅋ
특징점들 잡아서 해당 주파수와 크기를 정확히 알려주는 기능도 좀 추가를 해야겠고 ㅋㅋㅋ

하지만 이것은 연습용이였으니까 ㅋㅋㅋ
정 필요하신 분들이 있다면 댓글로 요청하세용 ㅋ

프로젝트 파일이 필요하신 분들이 있으면 댓글로 멜주소 써서 요청하세요 ㅋ 보내드리겠습니다 ㅋ
걍 C++ 로 해놓은 것도 있으니 그것이 필요하시면 고걸로 드리고 ㅋ
사실 이 코드가 더 잘짠것 같은 느낌인데 ㅋㅋㅋ

여튼 오늘은 여기까지 ㅋㅋ
Posted by J.Bear

댓글을 달아 주세요

  1. J.Bear 2012.01.19 11:25 신고  댓글주소  수정/삭제  댓글쓰기

    아 아래쪽에 세이브 버튼들은 분석된 그래프 파형과 FFT 출력결과를 파일로 저장하는 기능입니다. ㅋㅋ

  2. 공학도^-^ 2012.02.06 13:11  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 fft 공부중인 학생입니다 .. c++로 된 자료가 필요해서 이렇게 글을남겨요!!
    제 email 은 hemster1@nate.com 이에요글 잘보고갑니다 꼭좀 부탁드릴게요 ^^

  3. J.Bear 2012.02.06 22:19 신고  댓글주소  수정/삭제  댓글쓰기

    일반 FFT 라면 Radix-2 FFT 를 말씀하시는것 같은데 위의 코든 Radix-4 FFT 입니다 ㅋ

    어떤 코드가 필요하신지 말씀해 주시길 바랍니다

  4. 학생입니다. 2012.03.16 14:36  댓글주소  수정/삭제  댓글쓰기

    안녕하세요~ dft, fft 공부중인 학생입니다. 이 프로그램 프로젝트 파일을 받아보고싶습니다.
    제 이메일은 ksw7658@nate.com 입니다~ 잘보고 갑니다~! 감사합니다~!

  5. incruel 2012.03.20 16:56  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 블로그 구경중인데 정보들이 많네요^^
    혹시 프로그래밍하실때 사용하는 툴 정보좀 알수 있을까요?
    저기 위쪽에 스크린샷 보니 점선으로 줄맞춤을 볼 수 있게 되어있네요??
    너무 유용해 보이는데..^^;;;; 알려주시면 감사하겠습니다^^

  6. 2012.04.04 13:31  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  7. 옆집이웃. 2012.04.26 22:20  댓글주소  수정/삭제  댓글쓰기

    풋! 대단한데.. ㅋㅋ

  8. R 2013.03.16 00:09  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, FFT공부중인 학생입니다!
    Radix-4 프로젝트 파일을 받아보고 싶습니다:)

    제 이메일은 therichu@gmail.com 입니다
    감사합니다!

  9. 2013.03.28 09:05  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  10. Til_student 2013.05.27 00:41  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 신호처리 공부하는 직장인 학생입니다.
    matlab 이며 labview 이며 능통하신 분 같으시네요.
    모두 하나같이 주옥같은 source들 뿐입니다.
    (차근차근 요청 드려도 될런지요..?)
    죄송하지만 source파일을 요청 드려도 될런지요.
    제 메일은 passionlcy@nate.com입니다.
    요청 드려봅니다. 감사합니다.

  11. anonymous 2013.11.23 20:04  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 FFT 공부중인 컴공과 학생입니다.

    C#으로 짜신 프로젝트 혹시 보내주실수 있나요 단순 스펙트럼 분석은 구현까진 해봤는데

    정확한 수치의 주파수 대역에서 진폭값을 구하는것이 아직은 힘들어서 도움을 받고싶습니다.

    daverboy@nate.com 입니다

    감사합니다!

  12. K.jun 2013.11.25 18:01  댓글주소  수정/삭제  댓글쓰기

    FFT소스 공부중인데 딱 이런 반가운글을.. ㅠㅠ;

    junhoda6263@naver.com 메일로 프로젝트좀 부탁드려도될까요?;;

    저는 안드로이드로 작업하려는데 수식 알고리즘을 어떻게 작성하나 해서 해매고있었답니다 ㅠㅠ.

  13. H.kwak 2015.01.01 13:19  댓글주소  수정/삭제  댓글쓰기

    잘보았습니다.
    한가지 질문 좀.
    복합파동의 수치데이타가 엑셀로 있는데
    그것을 단순파동으로 분석해주는
    무료 프로그램 소개 좀. 해주세요.