【问题标题】:Calling Matlab from Fortran从 Fortran 调用 Matlab
【发布时间】:2013-03-19 11:46:58
【问题描述】:

我正在尝试使用 CodeBlocks 作为我的 IDE 和 GNU Fortran 编译器作为我的编译器来运行 fengdemo.f。它通过 include 运行良好,但无法构建对 matlab 引擎的任何方法调用

C:\Program Files\MATLAB\R2012b\extern\examples\eng_mat\fengdemo.F|51|undefined reference to `engopen_'|

C:\Program Files\MATLAB\R2012b\extern\examples\eng_mat\fengdemo.F|58|undefined reference to `mxcreatedoublematrix730_'|

C:\Program Files\MATLAB\R2012b\extern\examples\eng_mat\fengdemo.F|59|undefined reference to `mxgetpr_'|

C:\Program Files\MATLAB\R2012b\extern\examples\eng_mat\fengdemo.F|59|undefined reference to `mxcopyreal8toptr730_'|

C:\Program Files\MATLAB\R2012b\extern\examples\eng_mat\fengdemo.F|64|undefined reference to `engputvariable_'|

等等……

我尝试在线搜索,但在 Mathworks 或其他任何地方都找不到任何有用的信息。我还让 c++ 引擎演示工作,所以我的路径变量和其他类似的东西是正确的。

我根本不习惯使用 Fortran,因此不胜感激。

PS。 fengdemo.f 在 extern/examples/eng_mat 下,所以我没有发布任何代码。

问题:没有 VFC 甚至可能吗?如果是这样,有人能指出我正确的方向吗?

【问题讨论】:

    标签: matlab fortran


    【解决方案1】:

    您也可以“手动”做一些事情。在 Fortran 中,您可以使用“系统”子例程来运行系统命令。 例如,如果您在 Linux 环境中并且在 Fortran 代码中,则包含命令

    call system("firefox http://stackoverflow.com/")
    

    fortran 程序将打开一个到 StackOverflow 的 firefox 选项卡/窗口。

    您也可以在我阅读时从终端使用 MATLAB(我没有安装它)。例如,您可以调用下面的命令来生成图表。

    matlab -nosplash -nodesktop -r "ezplot('x')" 
    

    因此,您可以创建一个 matlab 函数并通过 fortran 调用它。 Walter Roberson 在MATLAB Answers 上写道,您可以使用:

    matlab -r 'myfunction(argument1,argument2)';

    或者更安全:

    matlab -r 'try myfunction(argument1,argument2); catch; end; quit'

    您还可以使用 Fortran 创建输入文件并在 MATLAB 中使用它。这不是一个自动解决方案,但它不需要特殊的编译器。但它取决于平台。

    【讨论】:

      【解决方案2】:

      如果您使用的是 Windows,MATLAB 支持的唯一 Fortran 编译器是 Intel Visual Fortran Composer。 GNU Fortran 仅在 Linux 或 Mac 上受支持。

      http://www.mathworks.co.uk/support/compilers/R2013a/index.html

      【讨论】:

      • 是的,这就是我要来的结论......我想我现在要移植到 linux......不过谢谢你的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多