回 帖 发 新 帖 刷新版面

主题:FORTRAN调用MATLAB的方法一

首先需要保存MATLAB代码在fortran同一目录下

这里命名成test.m
内容如下:
[color=008000]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/color]
[color=FF0000]clear all; close all; clc;
M=load('matrix M.txt');

eigvalues=eig(M);

plot(real(eigvalues),imag(eigvalues),'-r*');
title('矩阵M的特征值');
xlabel('特征值实数部分');
ylabel('特征值虚数部分');[/color]
[color=008000]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/color]


!fortran代码如下:
[color=0000FF]program main
implicit none

integer,parameter :: rows=100, cols=100
real*8 :: M(rows,cols)
integer :: i

call random_seed()
call random_number(M)

open(100,file='matrix M.txt')

write(100,'(<cols>E25.15)') transpose(M)

close(100)

call system("matlab -r test") 

end program main[/color]

直接运行fortran代码就可以了。
matlab不用事先打开。

vs2005+ivf10.1+matlab7.8.0 测试通过
试一试!

回复列表 (共15个回复)

沙发

哦,通过系统调用啊,这是“万能”的方法啊。标题应该说,fortran 调用任何程序的一种方法,哈哈。

不过,作图的话,推 gnuplot。

板凳

没用过gnu, 我用origin画2d 3d用matlab
免费的应该没收费的好用把 要不然人家也别混了 呵呵

3 楼

例子不错!

4 楼

不如先生成EXE,然后命令行调用

5 楼

MATLAB_2009
     mcc -m test.m  生成test.exe

安装MRC
     
!FORTRAN代码
program main
implicit none

integer,parameter :: rows=100, cols=100
real*8 :: M(rows,cols)
integer :: i

call random_seed()
call random_number(M)

open(100,file='matrix M.txt')

write(100,'(<cols>E25.15)') transpose(M)

close(100)

call system("test.exe") 

end program main
生成FORTRAN_TEST.EXE
双击FORTRAN_TEST.EXE
    如何上图?

6 楼

能脱离MATLAB环境

7 楼

5楼的方法不错

8 楼

楼主,有时间能否 Intel Fortran 和 Mathematica 软件相互调用的问题?当然,最简单的还是象你写出调用 MatLab 那样(其实就是一个 call system) 命令。有时,需要一些更高级的东西。比如,我要解析推导一个积分,这个在 Mathematica 中比较方便,然后将表达式返回 Fortran,机器自动完成;人工干预越少越好。
    有机会,大家多交流。

9 楼

比方说,我要处理粒子-粒子的相互作用。我的大部分程序当然是用 Fortran 来完成。但用 Fortran 处理到一定程度后,我需要计算矩阵元,当然我们可以用 Fortran 数值积分,但工作量很大;而且我知道这个可以解析计算时,我就想到 Mathematica 中去完成这个复杂的推导过程,然后将得到的解析表达式反馈回 Fortran,再继续干下面的工作。当然,您可以说,你先人工将矩阵元的解析表达式用 Mathematica 处理完,再编写程序不就得了吗?是,可以这样;但,适用面不广。

    这就是我想要的 Intel Fortran 与 Mathematica 混合编程的出发点。

10 楼

这样根本就无法在程序内部进行数据交流

我来回复

您尚未登录,请登录后再回复。点此登录或注册