MATLAB 与 FORTRAN 语言的混合编译

MATLAB 与 FORTRAN 语言的混合编译通过 MEX 文件来实现。

MATLAB 与 FORTRAN 语言的混合编译

本文于 2011 年发布于实验室内部网站。FORTRAN 语言的优势是计算效率较高,并且有着大量的成熟可靠的代码可以利用。MATLAB 的优势则是方便简洁,图形化非常方便,有现成的函数与工具箱可供利用。因此,将二者联合起来可以获得效率与易用性的平衡。

MATLAB 与 FORTRAN 语言的混合编译通过 MEX 文件来实现。本程序将 FORTRAN 语言用作计算模块,使用 MATLAB 做流程控制与可视化。实现的核心在于 MATLAB 外部程序接口。

C MATLAB gateway 
subroutine mexFunction(nlhs , plhs , nrhs , prhs) 
C variables 
integer nlhs , nrhs 
integer plhs(*), prhs (*) 
C input 
pointers pr_x=mxgetpr(prhs (1)) pr_x1=mxgetpr(prhs (2)) 
C output 
pointers plhs (1)= mxCreateDoubleScalar (0) pr_y=mxGetPr(plhs (1)) 
C calculation 
call eim(%val(pr_x),%val(pr_x1),%val(pr_y)) 
end subroutine mexFunction

结合有效折射率与遗传算法来优化设计 PCF 的结构,得到任意波长的零色散结构参数,任意波长段的色散平坦结构参数。为了方便更改参数设计了上边的这个 GUI。批量计算可以看压缩包中的“ZDFiber.m”文件。所有的源代码均已上传至服务器,点此下载(实验室内部链接)。希望能对大家的研究有所帮助。