首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上使用MATLAB的intel-fortran编译程序。

在Linux上使用MATLAB的intel-fortran编译程序。
EN

Stack Overflow用户
提问于 2013-08-07 14:07:27
回答 3查看 576关注 0票数 1

我有一个可执行的fortran代码,我想从MATLAB运行。

我尝试使用以下两个选项,但得到了错误:

代码语言:javascript
复制
!/home/atrac/code case172.jcl
error:- ls: cannot access ./id: No such file or directory
ls: cannot access ./id: No such file or directory

!gnome-terminal --command "./home/myhome/code case12.jcl"
error: There was an error creating child process for this terminal

有没有一种方法,我可以写一个shell脚本来执行程序,并暂停Matlab直到外部程序执行,然后把控制传回Matlab?

我试图在Matlab中运行一个遗传算法,该算法调用这个外部软件。任何想法或帮助都是非常感谢的。

谢谢你,亚什

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-09 04:28:30

好吧,看起来这里发生了两件不同的事情。两者都可能与Matlab的当前目录有关。

代码语言:javascript
复制
!/home/atrac/code case172.jcl
error:- ls: cannot access ./id: No such file or directory
ls: cannot access ./id: No such file or directory

在这里,您似乎正在设法运行您的code程序,但是code或JCL脚本正在当前工作目录中寻找一个名为id的文件。当您从Matlab中展开时,这将是Matlab的当前目录。从Matlab命令提示符中运行pwd以找出您所在的位置。您可能可以通过使用Matlab中的cd移动到id文件实际存在的目录(我猜它在/home/atrac中),然后使用相同的命令行运行code来修复这个问题。更好的解决方法是重写code和/或JCL脚本,以便在从任何路径运行时(可能使用绝对路径)运行,这样您的cwd就不重要了。

代码语言:javascript
复制
!gnome-terminal --command "./home/myhome/code case12.jcl"
error: There was an error creating child process for this terminal

在这里,领先的“。可能是搞砸了,因为它现在正在当前工作目录下寻找home/myhome,而不是在根目录下。尝试执行!gnome-terminal --command "/home/myhome/code case12.jcl" (没有".")而不是。

票数 1
EN

Stack Overflow用户

发布于 2013-08-07 15:24:30

理想情况下,这应该作为一个评论,但我没有足够的声誉。

但是,创建子进程的错误与MATLAB无关。外壳正在出错。你能从终端运行这个程序吗?

第二,您正在使用:

代码语言:javascript
复制
!/home/atrac/code case172.jcl 

但是您应该使用!/home/atrac/code code 172.jcl

票数 1
EN

Stack Overflow用户

发布于 2013-08-08 13:44:39

当包含该文件的文件夹不在MATLAB可见的UNIX系统路径上时,可以从MATLAB运行UNIX程序。若要确定MATLAB可见的系统路径,请在“命令”窗口中键入以下内容:

getenv(“路径”)

您可以对当前MATLAB会话或后续MATLAB会话中持续存在的系统路径进行修改,如下节所述。

修改当前MATLAB会话的系统路径。执行下列操作之一:

代码语言:javascript
复制
Change the current folder in MATLAB to the folder that contains the program you want to run.

Issue these commands using the Command Window:

path1 = getenv('PATH')
path1 = [path1 ':/usr/local/bin']
setenv('PATH', path1)
!echo $PATH 

如果重新启动MATLAB,则该文件夹不再位于MATLAB可见的系统路径上。

env/creating-opening-changing-and-deleting-files-and-folders.html#f0-38522

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18105624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档