> ## Content Index
> Fetch the complete content index at: https://yinguobing.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# MATLAB 与 FORTRAN 语言的混合编译
- URL: https://yinguobing.com/blog/compile-fortran-with-matlab/
- Published: 2011-10-07T17:40:00.000Z
- Updated: 2022-05-29T05:50:13.000Z
- Description: MATLAB 与 FORTRAN 语言的混合编译通过 MEX 文件来实现。
- Author: 尹国冰
- Tags: 燕山大学, 新手入门

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

![](https://yinguobing.com/blog/content/images/2011/10/fiberware.jpg "fiberware")

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”文件。所有的源代码均已上传至服务器，[点此下载](http://192.168.0.120/?attachment%5Fid=1108&ref=yinguobing.com)（实验室内部链接）。希望能对大家的研究有所帮助。