将Fortran的效率提高到MATLAB操作

问题描述 投票:0回答:1

我正在写信寻求一些建议来优化我的Fortran代码。

Fortran子例程在Visual Studio 2013的Windows 10上运行。在此程序中,首先执行MATLAB的m文件,以生成用于后续Fortran代码的数据文件。 MATLAB完成其任务需要花费一些时间(从几秒钟到十秒钟不等)。有可能在MATLAB过程完成之前开始运行后续的Fortran代码。我写了一段代码,如下所示。考虑到15秒的睡眠时间,它可以工作,但效率不高。总的来说,我想提出一些建议来提高该操作的效率。提前致谢。

logical (4)      :: result_matlab  
logical (4)      :: exists
real (kind=dbl),dimension(1000) :: dataoutofmatlab

result_matlab = SYSTEMQQ("directory of matlab\matlab.exe" -nodesktop -nosplash -r "my_mfile")  
INQUIRE (FILE = dataoutofmatlab, EXIST = exists)    % MATLAB generates ‘dataoutofmatlab.dat’  
if (.NOT. exists) then  
    call sleep(15)  
end if

open(2, file = 'dataoutofmatlab.dat', form = 'formatted')   % Fortran codes read ‘dataoutofmaltab.dat’  
do i = 1, 1000  
    read(2,*) dataoutofmatlab(i)  
end do  
close(2)
matlab intel-fortran processing-efficiency coding-efficiency
1个回答
0
投票
call execute_command_line (command [, wait] [, exitstat] [, cmdstat] [, cmdmsg])

其中参数如下:

    command具有意图,并且是标量默认字符串,包含要由处理器解释的命令行。
  • wait具有意图,它是标量默认逻辑,指示是否应异步执行命令(wait=.false.),或在返回Fortran程序之前该过程是否应等待其终止(默认) 。

  • [exitstat具有意图inout,并且是一个标量默认整数变量,除非wait为false,否则将从命令中为其分配“进程退出状态”(其含义也取决于系统)。

    ] >
  • cmdstat具有意图,是分配为零的标量默认整数变量如果执行execute_command_line本身没有错误,则为-1,如果处理器不支持命令执行,则为-2,如果指定了wait=.true.,但处理器不支持异步命令执行,则为正值;如果发生任何其他错误,则为正值。

  • cmdmsg具有意图inout,并且是标量默认字符串,如果cmdstat为分配一个正值,分配一个解释性消息。

© www.soinside.com 2019 - 2024. All rights reserved.