아래 글을 보니 MATLAB 소프트웨어 단속 하나 보네요~

 

http://www.clien.net/cs2/bbs/board.php?bo_table=park&wr_id=26152226

 

위 주소의 글에 따르면 특정 교수 연구실 하나 지목해서 압수수색영장 가지고 싹 잡아서 20 카피에 54억 불렀다고 하는데~

 

한 카피당 2.7억 정도 부른건데… 제가 아는 가격보다는 한 2천정도 덜 부른 거 같네요.

 

보통 MATLAB 을 크랙으로 사용할 때는 필요한 툴박스만 사용하는 게 아니라 풀패키지를 깔게 되고~

 

풀 패키지 가격이 요즘 한 2.9 억 정도 되는 것 같던데~

 

뭐 일단 저는 대학에서 MATLAB 을 배우긴 했고 지금도 MATLAB 을 좋아하긴 하지만 대학에서 MATLAB 을 가르치는 것 자체는 반대하는 입장입니다.

 

위에 밝힌 바대로 MATLAB 은 어마어마한 비용이 들어가는 툴입니다. 정말 방대한 실용적인 툴박스들이 제공되서 편리하긴 하지만 툴 박스 하나 하나의 가격이 만만치가 않습니다. 또한 1년에 한번씩 업데이트를 위한 라이선스 유지 비용도 듭니다.

 

비싼 툴박스는 2천만원이 넘는 것도 있죠~ 가격에 대해서는 아래 글 참조바랍니다.

 

2013/11/07 - [programming language/MATLAB] - MATLAB 구매 가격에 대해 질문하는 분들을 위해…


 

암튼 대학에서 알고리즘을 공부하는데 있어서 MATLAB 을 대체할만한 오픈 소스 프로그램들은 얼마든지 있습니다.

 

제 블로그에서도 종종 소개드리는 Scilab, Octave, Freemat 과 같은 툴들이 있고~ 파이썬을 사용하는 Spyder 같은 프로그램도 있습니다.


 

http://iamaman.tistory.com/category/programming%20language/Octave



http://iamaman.tistory.com/category/programming%20language/SCILAB


 

2012/08/20 - [유틸] - MATLAB 과 유사한 Open Source 프로그램 FreeMat



2013/11/13 - [유틸] - 과학 분석에 사용되는 Python IDE Spyder



2013/11/26 - [컴퓨터일반] - ipython으로 unique 하게 sorting 하기



2014/09/05 - [programming language/Octave] - Windows OCTAVE 3.8 GUI 환경


대학에서는 이런 툴들에 대해 가르쳐야지 MATLAB 을 정식과목으로 채택하면 이건 뭐 학생들한테 크랙 사용하라는 소리 밖에 안 되지 않을까요?

 

대학에서는 MATLAB 만 가르쳐서 학생들이 MATLAB 만 사용할 줄 안다면 이건 매스웍스의 마케팅 전략에 놀아나는 꼴 밖에 안 되고~ 학생들을 MATLAB 의 노예로 만드는 꼴밖에 되지 않는다고 생각되네요.

 

대한민국이 참~~ 크랙 많이 사용하는데~ 운영체제인 윈도우부터 크랙을 사용하다 보니 MATLAB 크랙 사용하는 거야 너무나 당연한 걸로 생각하게 되는 것 같습니다.

 

우리나라가 윈도우 위주의 세상이 된 건, 생각 없는 정부의 소프트웨어 정책을 원망해야겠지만~ MATLAB 교육에 대한 결정권자들은 대학 교수들일거라고 생각되네요. 교수님들이 위에 얘기했던 MATLAB 대체 프로그램들을 적극적으로 교육해야 한다고 생각합니다.

 

지금 위에 털린 연구실 뿐만 아니라 정말 많은 연구실들이 지금도 크랙을 많이들 사용하고 있을 겁니다. 털면 다~~ 털리는거죠 뭐….

 

이제 우리나라도 소프트웨어의 라이선스 정책에 대해 심각하게 생각해 볼 때가 되지 않았나 생각합니다.

 

일단 운영체제부터 리눅스를 주로 활용할 수 있어야 하겠고~ 운영체제를 오픈 소스로 사용하다 보면 자연스럽게 소프트웨어들도 오픈 소스 또는 프리웨어에 관심을 갖게 될 것 같습니다.

 

저도 윈도우만 사용할 때 보다 리눅스를 사용하면서 정말 다양하고 좋은 오픈 소스 또는 프리웨어들에 관심을 갖게 되었고, 지금은 알고리즘을 하는데 있어서는 MATLAB 이 아니어도 딱히 불편함이 없는 상황 입니다.


 

물론 MATLAB 이 없으면 안 되는 상황에서는 MATLAB 을 사서 사용해야겠지만~~ 간단한 알고리즘 몇 개 공부하는데 MATLAB 으로 하는 건…. 파리잡는데~ 대포쏘는 것 같은 느낌이네요. Octave, Scilab 같은 프로그램을 사용할 줄 안다면 회사에서 MATLAB 에 적응하기는 매우 쉬울 걸로 생각되네요~

 

예전에는 윈도우, 오피스, MATLAB 과 같은 프로그램에 대해 대체할만한 프로그램이 없어서 어쩔 수 없었다고 하더라도… 지금은 대체할만한 오픈 소스 또는 프리웨어 프로그램들이 많습니다.

 

과연 지금 대학의 소프트웨어 교육들이 바람직한 것인지… 대학에서의 소프트웨어 교육에 대해 교수님들이 적극적으로 고민해 주셨으면 좋겠네요.


  1. ㄴㅇㄹ 2014.09.20 16:25

    블로그주인님쿨하셔요

  2. 학생요 2014.12.17 16:01

    학생용은 5만원이에요

  3. Daniel Heo 2015.08.31 01:19

    학교에서 MathWorks와 라이센스 계약을 체결해서 무료로 제공하기도 합니다. 저희도 그렇구요. 아마 매트랩 강의가 있는 학교면 거의 다 그러지 않을까 싶네요. 블로그 둘러보니 배울 것이 많은 곳이네요 ㅎㅎ 저도 요즘 드론 프로젝트 하면서 블로그 운영하고 있는데 자주 찾아오겠습니다.

    • 남성 2015.08.31 03:11 신고

      방문해 주셔서 감사합니다. ^^ 학교 컴퓨터 실에서야 당연히 라이센스 계약을 하고 사용하겠죠. 그런데 대학 연구실에서는 그렇지 않은 곳도 많은것 같습니다. 개인도 마찮가지구요. MATLAB 툴박스를 꼭 사용해야 하는것이 아니라면 학생들은 Octave, Python 등을 사용하는게 좋을것 같고 아래 주소에서 소개한 Julia 등과 같은 언어를 사용하는것도 좋을것 같네요.

      http://iamaman.tistory.com/1479

      개인적 경험으로도 MATLAB 만 사용할 때 보다는 위에서 소개한 오픈소스를 사용하면서 실력이 더 늘었다고 생각되네요.

      드론 프로젝트 하신다고 하셨는데~ 재밌겠네요! 좋은 결과 있으시길~

  4. 맷랩사용 2015.09.16 01:08

    뜬금없이 matlab알려주고 이거 알아서 깔라고한다음 그날과제에 matlab으로 푸는걸 내줌 쓰는법도모르는데

    • 남성 2015.09.16 08:18 신고

      대책이 없네요. 학생용을 사서 사용하셔도 되는데 일단 교수한테 오픈소스 사용해서 해도 되냐 물어보는게 좋을것 같네요. 방문해 주셔서 감사합니다.

  5. ㅁㄴ 2015.09.16 17:44

    저도 수업때 내준 매트랩 과제하려고 매트랩 다운받는법 찾다가 들어왔는데요
    오픈소스가 뭔가요?? 빨리 받아서 해야하는데... 답답하네요

    • 남성 2015.09.16 18:35 신고

      오픈소스에 대한 정의는 아래 주소 참조하시기 바랍니다.

      https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_%EC%86%8C%EC%8A%A4

      MATLAB 이 없으시면 octave 나 freemat 을 사용해 보세요. 문법이 거의 유사합니다.

      octave : http://iamaman.tistory.com/1427
      freemat : http://iamaman.tistory.com/639

  6. 공대생 2016.11.03 21:56

    형님. 저는 기계공학과에 다니는 학생인데요. 매트랩을 하려고 합니당. 요즘 회사에서도 그렇고 실무자들이 매트랩없으면 안된다고 해서요. 아직 카티아나 오토캐드밖에 못다루는데요. 요것도 해야한다고 하네요. 그런데 행님, 매트랩 학생용 에디션으로는 안되는겁니깡? octave, freemat은 오픈소스용 수치해석 툴인가요? 일단 이거 쓰고 있으면 될까요? 아니면 돈 좀 주고서라도 학생용에디션 번들까지 55$하던데 요거 얼렁 사서 책 봐야 할까요

    • 남성 2016.11.03 22:23 신고

      음 어떤 분야, 어떤 회사냐에 따라 다를것 같은데... 카티아 오토캐드 등은 기구물 디자인 할 때 쓰지 않나요? 저는 들어는 봤지만 사용해 보지도 할줄 도 모릅니다.
      어떤 분야를 하고 싶은지를 정하고 공부하시는게 좋을 듯 하네요.
      자동차 제어기용 소프트웨어를 하고 싶다면 C 를 할 줄 알아야 하고 임베디드에 대한 지식이 있어야 합니다.
      요즘 자동차 제어기는 MBD(Model Based Design) 로 가려는 추세이므로 Simulink 로 제어기 소프트웨어를 만드는 추세 입니다. 학생용 stateflow 가 있는지 모르겠지만 stateflow 를 할줄 알면 좋습니다.
      Simulink 를 사용한다고 해도 MATLAB 이 기본입니다.

      octave, Freemat 은 MATLAB 과 문법이 굉장히 유사한 툴입니다. MATLAB 스크립트에 대해 공부한다면 그냥 octave, Freemat 을 사용해도 될것 같고 MBD를 하고 싶다면 어쩔수 없이 Simulink, Stateflow 가 들어있는 학생용 MATLAB 을 사서 공부하셔야 할 겁니다.
      대학생이시면 학교 컴터실에 MATLAB, Simulink 등이 많이들 설치되어 있으므로 사용해 보시길 추천 합니다.

  7. OnDraw 2018.10.23 11:06 신고

    이렇게 배운 인력은 나가서도 매트랩을 써야 하지요...

    연구성과를 외부의 다른사람이 전달받아 쓰게 되면 그사람도 매트랩 써야 하구요

FFT (Fast Fourier transform)는 이산 푸리에 변환(Discrete Fourier transform, DFT) 를 빠르게 하기 위한 알고리즘으로 요즘 세상에 알게 모르게 굉장히 많이 사용되고 있습니다.


 그 응용이라고 하면 너무나 광범위 하죠~

 

우리가 거의 매일 사용하는 MP3 음악 파일은 DCT(discrete cosine transform) 를 이용한 손실 압축 방식인데 여기도 FFT 가 응용되고~ 요즘 한창 많이들 사용하고 있는 통신 방식인 LTE(Long Term Evolution)나 Wibro 등은 Orthogonal frequency-division multiplexing (OFDM)이라는 기술을 근간으로 하는데~ 이 OFDM 이라는 기술도 FFT 를 통해 구현 됩니다. WIFI 는 말 할 것도 없고 스펙트럼 분석에도 FFT 가 사용되죠~

 

http://ko.wikipedia.org/wiki/%EA%B3%A0%EC%86%8D_%ED%91%B8%EB%A6%AC%EC%97%90_%EB%B3%80%ED%99%98


FFT 는 요즘 그 쓰임이 많은 만큼 여러 언어에서 함수로 제공해 주는 경우가 많은데요~

 

그러한 툴들의 많은 경우가 오늘 소개해 드리는 FFTW 라는 라이브러리를 사용하곤 합니다.

 

FFTW 의 홈페이지는 다음과 같습니다.

www.fftw.org

 

FFTW 라는 명칭은 "Fastest Fourier Transform in the West" 라고 하네요~ 서부에서 가장 빠른 푸리에 트랜스폼이란건데..

 

속도에 대한 자부심이 느껴지네요.

 

FFTW 는 MIT 의 Matteo Frigo 와 Steven G. Johnson 라는 분이 만들었습니다.

 

소개를 보면 ~ one-dimensional 뿐만이 아니라 multi-dimensional transforms도 지원을 하고 임의의 크기에 대한 DFT 도 지원을 하는군요.

 

음성이나 이미지 쪽에서 많이 쓰이는 DCT 나 DST 등도 할 수 있고~ GNU GPL 라이센스의 Free 소프트웨어라고 설명되어 있네요.

 

Non-free licenses 는 MIT 를 통해 살 수 있다고 합니다.

 

FFTW 는 MATLAB 에도 들어있더군요. 물론 Mathworks 에서 Non-free licenses  로 구매한 거겠죠.

 

이전 포스팅에 소개했던 FreeMat 이란 프로그램에도 FFTW 를 사용했다고 하더군요. 


2012/08/20 - [유틸] - MATLAB 과 유사한 Open Source 프로그램 FreeMat

 

아!! 뭔지 모르겠지만 상도 받았군요. 1999 J. H. Wilkinson Prize for Numerical Software 라는 상을 받았다고 하는데~ 상 받을 만 하니깐 받았겠죠~

 

저자들이 쓴  논문("A Fast Fourier Transform Compiler" (in PLDI 1999)) 도 2009년에 The Most Influential PLDI Paper award 라는 상을 받았군요.

 

소개는 대충 여기까지 하고 이제부터 Codeblock 을 이용해서 간단하게 사용해 보죠.

 

다운로드는 링크는 다음과 같습니다.

http://www.fftw.org/download.html

 

윈도우용 DLL 파일은 아래 주소에서 받을 수 있구요.

http://www.fftw.org/install/windows.html

 

32비트 64비트 버전이 있으니 각자 자신의 OS 에 맞게 다운로드 받으시기 바랍니다.

  

 

저는 윈도우 7, 32 비트라 fftw-3.3.2-dll32.zip 파일을 다운로드 받았습니다. 압축을 풀면 필요한 fftw3.h.dll 파일이 들어있습니다.

 

이제 Codeblock 에서 Console application 으로 프로젝트를 하나 생성하고~ 

 

fftw3.h 파일은 CodeBlocks 이 설치된 하위 폴더인 include 폴더에 넣어 줍니다. 저의 경우는 아래 경로에 넣었습니다. 각자 설치 경로에 맞게 넣어 주세요~

 

C:\Program Files\CodeBlocks\MinGW\include

 

그리고 libfftw3l-3.dll, libfftw3f-3.dll, libfftw3-3.dll 파일들은 위에서 생성한 project 폴더에 소스와 같이 넣었습니다.

 

예제는 다음과 같이 간단하게 1024 크기로 FFT 하는 예제 입니다.

 

한번 따라 해 보실~ 분들을 위해 파일로 첨부합니다.



main.cpp

 

#include <iostream>

#include <fftw3.h>

 

using namespace std;

 

int main()

{

    fftw_complex *in, *out;

    fftw_plan p;

 

    int N=1024; // FFT size

 

    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); // input buffer

    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); // output buffer

    p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); // FFT 준비

 

    for (int n=0; n< N ; n++) // complex data sample 생성

    {

     in[n][0]=n; // real

in[n][1]=n; // imag

    }

 

    fftw_execute(p); // FFT 수행

 

cout << fixed;

cout.precision(10);

 

for (int n=0; n< N ; n++) // 결과 확인

    {

     cout << n << " real : " <<out[n][0] << " imag : " <<out[n][1] << endl ;

    }

 

    fftw_destroy_plan(p);

    fftw_free(in); fftw_free(out);

 

    return 0;

}

 

마지막으로 Codeblock 에서 아래 그림처럼 Settings >> Compiler and … 에 들어갑니다.

 

 

 

이제 아래 그림처럼 위에서 해당 폴더에 추가 했던 dll 파일들의 path 를 잡아줍니다.

  

이제 설정은 다 끝났습니다. F9 를 눌러서 실행해보면 다음과 같이 FFTW 라이브러리를 이용한 FFT 가 정상적으로 동작하는 것을 확인 할 수 있습니다. 요렇게요~

 

 

제대로 된 건가 해서 같은 입력 값에 대해 MATLAB으로 FFT 해서 비교해 보니 똑같이 나오더군요.

 

제가 한 예제는 아래 주소의 FFTW 의 매뉴얼에 있는 튜토리얼을 보고 따라 한 건데요~

http://www.fftw.org/fftw3_doc/

 

내용이 방대하니 필요한 부분만 쏙쏙~~ 골라서 보시기 바랍니다.

 


  1. 키드 2014.05.11 18:10

    안녕하세요 제가 fftw를 이용하여 가지고 있는 데이터를 푸리에 변환 시키려고 하는데 정말 모르겠어서 이렇게 댓글 남깁니다
    혹시 보시게된다면 메일 부탁드립니다
    pokssak26@naver.com

  2. 깜찍이홍섭이 2014.07.22 16:06

    블로그 대로 수행해보다가 codeblocks의 하위폴더가 share 폴더 밖에 없고 include 폴더는 없는데 이런 경우는 어떻게 해야 합니까?

    • 남성 2014.07.22 17:46 신고

      codeblock 을 컴파일러 제외 하고 설치 한 경우인가요? 뭐 그런 경우에는 fftw3.h 파일을 해당 프로젝트 추가해서 수행해도 됩니다. 어차피 컴파일러가 인식할수 있는 path 에만 넣으면 되니까요.

      또는 Mingw 를 따로 설치 했다면 mingw 를 설치한 폴더 하위에 include 폴더에 fftw3.h 를 넣으셔도 될 겁니다.

  3. goni 2016.05.17 22:26

    안녕하세요. c++언어로 리듬게임 제작 중인 학생 입니다. 덕분에 많은 도움 됬습니다.
    질문 하나 하고 싶은데.. 혹시 fmod로 mp3 파일 데이터 추출 해서 적용 하려고 하는데 방법 아시나요?

  4. 2018.05.21 15:18

    비밀댓글입니다

    • 남성 2018.05.21 15:54 신고

      통신 전공했고 통신 분야 회사, 소프트웨어 회사, 자동차 회사 등을 거치면서 주로 알고리즘 관련한 개발을 했습니다.

평소 오픈 소스 프로그램을 즐겨 사용해 보곤 하는데~

 

오픈 소스 프로그램 중에는 정말 훌륭한 프로그램들이 많다는 생각을 많이 합니다.

 

아래 포스팅에서 MATLAB 과 유사한 프로그램들로 SCILAB 과 Octave 를 소개해 드린 바 있는데요. 



2011/04/17 - [유틸] - GNU Octave 를 이용해 보자


2011/03/11 - [MATLAB] - SCILAB


2012/01/12 - [컴퓨터일반] - SCILAB 간단 사용법



 

오늘은 MATLAB 과 유사한 또 다른 오픈 소스 프로그램인 FreeMat 에 대해 소개해 드리려 합니다.

 

일단 FreeMat 의 공식 홈피는 아래 주소와 같습니다.

http://freemat.sourceforge.net/

 

메인 화면에 Downloads 라고 쓰여진 바로 밑에 다운로드 링크가 있으니깐~ 다운로드 받아서 한번 사용해 보세요~

 

윈도우, 리눅스, 맥 에서 다 돌아가는군요.

 

저는 이런 거 발견하면 일단 한번씩은 꼭 깔고 보는데요~

 

다음과 같이 생겼습니다.

 

기본적으로 생긴 건 MATLAB 과 굉장히 유사하더군요. 그리고 위에 예제와 같이 기본적인 함수라던가 복소수 처리 등도 같습니다.

 

가격으로 보나 툴박스로 보나 MATLAB 과 비교는 무리지만~ 기본적인 함수들만을 이용할 때는 쓸 만 하다고 생각합니다.

 

MATLAB 이 안 깔린 컴퓨터에서는 이런 프로그램 깔아서 써도 괜찮을 것 같군요.

 

아래는 에디터에서 코딩 한번 해 본건데요.

 

보시다시피 확장자도 .m 이더군요. MATLAB 과 약 95 프로 호환된다고 홈피에 써 있네요.

 

위의 코드를 실행해 봤습니다.

 

간단하게 1차원 곡선과 FFT 한번 해 본건데 이 정도만 볼만 하다고 생각되네요.

 

심플하고 괜찮아 보이죠?

 

써 보니깐 굉장히 가벼워서 좋은 것 같네요.

 

MATLAB 툴 박스를 주로 이용하시는 게 아니라면 이런 오픈 소스 프로그램을 써 보시는 것도 좋을 것 같군요.

 

이런 프로그램들은 중고등학생들도 많이들 이용했으면 좋겠네요.

 

수학이나 과학 공부하는데 굉장히 도움이 많이 될 거라고 생각됩니다.


  1. qubick 2012.09.13 02:23

    c언어로 직접 그래프함수 구현해서 쓰다가 머리가 너무 아파 시뮬레이션 프로그램 찾아 돌아다니길 한참... 매트랩이 너무 무거운 프로그램이라 고민하다가 우연히 좋은 프로그램 정보 얻어갑니다 설치도 금방, 가볍고 잘 돌아가고 아쉬울 게 하나 없네요! 정말 도움 많이 되는 포스팅이었습니 :)

    • 남성 2012.09.13 10:12 신고

      도움이 되었다니 다행이네요~ 방문해 주셔서 감사합니다. ^^

  2. paksungwoo@naver.com 2013.04.18 08:51

    와 이런게 있군요. C언어는 너무 골치아파서 하기 힘든데 매트랩은 너무 비싸서 엄두가 안나서 쓰지 못하고;;

    이래저래 근심이었는데 한 번 써봐야 겠습니다.

    • 남성 2013.04.18 09:00 신고

      방문해 주셔서 감사합니다. ^^
      매트랩의 툴박스를 사용해야 하는게 아니라면 이런 공짜 프로그램을 사용하는것이 좋다고 생각됩니다.

  3. 이세원 2017.03.22 23:29

    matlab을 공부하려고 하다가 프리멧을 알게되서 왔는데요 스크립트랑 펑션이 있는데 펑션을 어떻게 키는지 알려주세요 감ㄱ사합니다^^

    • 남성 2017.03.23 08:23 신고

      함수 사용은 아래 글 참조해 보시기 바랍니다.

      http://iamaman.tistory.com/122

+ Recent posts