【发布时间】:2017-02-06 12:45:12
【问题描述】:
首先,我是刚接触 Fortran 和 Matlab 这个领域的新手,所以如果我没有看到很明显的地方,请多多包涵。
这是我的问题:
我有一个 Fortran 90 代码,它将计算 2 个大型复杂矩阵 A 和 B。我将这些矩阵写入一个文件,在MATLAB 中读取它并进行一些操作(求解特定的特征值)。这种方法的问题是即使是二进制格式的数据写入和读取也需要很长时间。在某些情况下,写入和读取操作比实际解决特征值问题要长。
那么,我是否可以直接将我的 Fortran 90 代码生成的矩阵传递给 MATLAB,而无需编写和读取?
我在 Fortran 中阅读了有关 call system 的信息,但它似乎没有传递任何参数。
【问题讨论】:
-
为什么不用 Matlab 在 Fortran 中计算特征值?
-
您可以在 Fortran 中使用 LAPACK 来计算特征值。
-
Matlab 的文档非常详细地解释了如何创建一个 Fortran
mex文件来直接调用;由于这会将代码的两个部分都放入 Matlab 内存空间,因此您无需进行耗时的文件读写。如果这没有吸引力,请不要放弃使用 Matlab 计算特征值的想法——Matlab 的大多数核心计算例程都是在编译代码中实现的,通常使用您调用的相同库(例如 BLAS、MKL)当 Matlab 不快时,Fortran 和速度差异可以忽略不计。 -
你在用 gfortran 编译吗?查找
execute_command_line,它是 Fortran 2008 标准的一部分,应在新代码中考虑以实现未来的可移植性。 gcc.gnu.org/onlinedocs/gfortran/…