回 帖 发 新 帖 刷新版面

主题: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个回复)

11 楼

你指的是什么意思 我觉得可以交流。

你始终可以讲fortran的数据保存成文件,或者将matlab的数据保存成文件
然后在另一个程序的代码中读进来。

fortran的话
我可以 open write
然后matlab load

matlab的话我可以save
然后fortran open read

你觉得呢?

12 楼

这方法好像只能用到Fortran程序最后。
如果Fortran想利用Matlab算的结果,这个方法就不行了。因为Fortran不等Matlab算完,它自己继续执行下面语句了?
不知道Fortran想利用Matlab算的结果,怎么解决?

13 楼

不能有参数的传递!!
没有结果的返回!

14 楼

测试通过!谢谢!

15 楼

好神奇啊。。。

我来回复

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