matlab에서 C파일과 포트란 파일을 동시에 mex 시키는 방법에 대한 조언 부탁드립니다..
- 글쓴이
- 루목유
- 등록일
- 2012-08-13 17:45
- 조회
- 5,549회
- 추천
- 0건
- 댓글
- 1건
관련링크
그런데 계산시간이 6시간 걸려서 case study하는데 시간이 오래 걸릴 것 같아 고민하고 있던 중,
Cmex라는 matlab 기능을 알게 되어서 공부하고 있었습니다.
ODE solver는 ode45를 사용하고 있었고, ode45로 넘겨주는 함수 파일을 mex파일로 만드는데 까지는
성공했었습니다. 그런데 ode45안에 머무는 시간도 꽤 길더라구요.
그래서 ODE solver를 찾기 시작했습니다. 대부분 C나 포트란으로 되어 있더라구요.
그런데 제가 matlab에 입문한지 얼마 되지도 않았고 C나 포트란은 6년 전 새내기 때 들은 이후로
사용해본 적이 없어서 거의 아는 것이 없습니다. 새로 C나 포트란을 배우면서 짜놓은 matlab code를
모두 C나 포트란으로 돌리기에는 시간이 너무 걸릴 것 같아서 포기하고 있던 차에, 다음의 사이트를 찾았습니다.
http://www-m3.ma.tum.de/Software/ODEHome
어떤 응용수학자가 ODE solver를 mex 파일로 바꿔주는 과정을 공개해놓았더라구요.
위 페이지 중간 쯤에 How to install and compile the MEX interfaces라는 링크가 있습니다.
http://www-m3.ma.tum.de/Software/ODEInstall
mex -setup을 이용한 방법과 lcc-win32를 이용한 방법, OpenWatcom 1.3을 이용한 방법을 올려놓았습니다.
mex -setup을 이용한 방법이 좋겠다 싶어서 실행을 했는데, 포트란 파일과 C 파일을 윈도우에서는 동시에
컴파일이 안 되는 것 같더라구요.
구글링을 하다 보니, 저랑 같은 웹페이지를 보고 같은 질문을 한 외국인이 있더라구요.
http://www.mathworks.com/matlabcentral/newsreader/view_thread/123492
관련된 답변들에 이해가 안 되는 것도 많았고 한 두가지는 잘 안되더라구요.
지금 현재는 포기한 상태입니다. 빨리 완성을 해야 한다는 압박도 있고,
왠지 네버엔딩스토리가 될 것 같아 반포기 상태였습니다.
조그만 돌파구라도 마련해주신다면 정말 정말 감사드리겠습니다...
다른 사람들 의견
-
rockywest
()
Matlab과 C를 결합해서 많은 일을 하고 있는 사람으로서, 그냥 지나치기 뭐해서 답변드립니다 (질문하신 분, 아직 학생이신가봐요?)
거기 페이지에 들어가보니, 누가 이런 답변을 해놨지요...
that's quite easy to achieve: don't use the "mex" function. get a "make"
program and write a simple make file. the parameters for the compilation
can easily be found by the -n switch to the "mex" function.
if you are going to do mixed-language programming (c and fortran) you'll
probably have to explicitly list the run-time libraries in the linking
stage for the "non-main" language.
그 말이 맞습니다. 사실 크게 어려운 일이 아닙니다. 다만 위의 말이 무슨 내용인지 이해가 가느냐 이건데, 프로그램 경험이 조금 있는 사람이라면 별것 아닌 내용인데, 그렇지 않으면 도데체 무슨 소린가 할 수도 있지요.
여기서 자세히 설명하긴 그렇고, 차라리 근처에 프로그램 경험자를 붙잡고 부탁해서 설명해달라고 하는 게 어떨까 합니다. 그게 훨씬 빠를 겁니다. C언어 수업 한두번 들어보고 예제 몇번 해보고, 그런정도의 경험을 말하는 것이 아니고, 실제로 프로그래밍 일을 해본 사람을 이야기하는 겁니다. 개발,디버깅,라이브버리 빌딩 등의 일 말이죠.