2011-09-11 5 views
2

높은 수준의 langunage가 Fortran 서브 루틴을 호출하는 가장 쉬운 방법을 허용하는지 궁금합니다. 현재 MATLAB을 사용하고 MEX 파일을 호출하는 것은 다른 언어에 비해 상대적으로 복잡해 보입니다.Fortran 서브 루틴을 호출하기위한 최상의 고급 언어?

* 파이썬을 f2py * R을 통해 통해 :

나는 "까지 실행"점점 빠르게 측면에서 다음을 비교하는 방법에 특히 관심이 있어요? * MEX 파일을 통한 MATLAB

또 다른 방법은 "처음부터 다시 시작하여 새로운 언어를 배우는 것입니다. 목표가 Fortran 서브 루틴을 호출하는 경우 어떤 것을 선택하겠습니까?"

나는 좋은 데이터 처리 및 그래픽과 빠른 포트란 서브 루틴 호출 기능이 결합 된 "최고의 장점"을 얻으려고합니다.

제공 할 수있는 도움에 대해 미리 감사드립니다. 아아, 누군가가 Fortran에 대한 MEX 튜토리얼을 잘 알고 있다면 잘 이해할 수있을 것입니다.

답변

4

f2py를 통한 파이썬은 매우 좋습니다. IVF가 설치된 Windows에서 약간의 문제가 발생했지만 메일 링리스트는 신속한 응답을 제공합니다. Linux에서는 문제없이 작동했습니다.

저는 R을 사용하지 않았지만, 이해할 수있는 것처럼, 많은 양의 데이터로 많은 통계를 작성하는 경우에만 유용합니다. MATLAB에 관해서는, 그것은 끔찍한 언어입니다. FORTRAN을 호출한다면, Python을 사용하는 것이 좋습니다.

+0

응답 해 주셔서 감사합니다. 물론, Fortran을 직접 사용하는 것은 사소한 해결책이지만 앞에서 언급했듯이 두 세계를 모두 활용하고 싶습니다. f2py에 관한 튜토리얼을 여러 번 보았는데 MATLAB과 달리 Python에서 호출하기가 매우 쉽다. 훨씬 어렵다. 또한 다른 사람들이 관심을 가질만한 링크 인 http://nag.com/numeric/MB/start.asp도 발견했습니다. 이것은 MATLAB에서 호출 할 수있는 NAG Fortran 수치 서브 루틴입니다. 당신의 반응에 대해 다시 Thnaks! – EcoDude

+0

아멘 대 파이썬. 내 경험에 따르면 Fortran 서브 루틴을 어쨌든 사용해야하는 방식으로 작성하면 (예 : 인수의 의도 지정 등) f2py 변환은 거의 사소한 문제가됩니다. 또한 텍스트 처리, 네트워크 통신 및 기타 기능을 수행하기 위해 모든 종류의 다른 라이브러리와 통합되어 있습니다. 나는 MATLAB을 사용할 때 MEX 파일을 만들려고했는데 f2py를 시도한 날에 MEX 파일에 대해 걱정할 필요가 없다는 것을 깨달았습니다. –

+0

코멘트 주셔서 감사합니다! MATLAB이 왜 MEX 파일을 작성하는 것을 어렵게하는지 이해할 수 없습니다. 필자는 파이썬을 포트란에 연결하는 측면에서 파이썬에 관해 많은 긍정적 인 평가를 받았다.나는 R/Fortran 연결에 대한 좋은 점도 들었으므로 또 다른 가능성이있다. MATLAB이 코드를 C와 Fortran에 연결하는 과정을 간소화하는 것이 필요하다고 생각하지 않았다는 것에 실망했습니다. – EcoDude

6

높은 수준의 langunage가 Fortran 서브 루틴을 호출하는 가장 쉬운 방법을 허용하는지 궁금합니다.

명백한 대답은 포트란 자체입니다. 소위 Modern Fortran (2003 & 2008)에는 많은 고급 기능이 있습니다. 그리고 분명히 레거시 FORTRAN 코드를 호출하는 것은 쉽습니다 (내 생각에 당신은 오래된 FORTRAN 코드 기반을 가지고 있습니다).

+3

그래픽의 경우, Fortran의 dislin 또는 plplot 라이브러리를 사용할 수 있습니다. –

1

내가 보통 당신의 경우 명령 행 인수를 입력으로 전달할 수있는 포트란 프로그램을 작성합니다. intrinsic get_command_argument 서브 루틴을 사용하는 Fortran 2003 표준에서 쉽게 사용할 수 있습니다. 그런 다음 래퍼로 사용중인 모든 언어의 Fortran 프로그램 출력을 구문 분석 할 수 있습니다 (언어가 시스템 쉘에 액세스 할 수 있다고 가정). 과거에는 쉘 스크립트, MATLAB (회피), Python으로이 작업을 수행했습니다.

관련 문제