首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matlab从命令linux行执行脚本

问matlab从命令linux行执行脚本
EN

Stack Overflow用户
提问于 2016-08-02 22:23:49
回答 3查看 48.6K关注 0票数 21

有没有办法从linux命令行运行matlab脚本?例如,我有以下简单的脚本"test.m":

代码语言:javascript
复制
x = [1,2,3];
y = [2;3;4];

prod = x*y
disp(prod)

因此,我想要的是能够从linux命令行执行该脚本,而无需打开matlab GUI或matlab命令行。也就是说,我希望是这样的:

代码语言:javascript
复制
~$ matlab test.m

我希望在linux命令行上看到该产品的结果。

我知道你可以用python做到这一点,例如,

代码语言:javascript
复制
~$ python test.py

但我想知道用matlab是否也能做到这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-02 22:39:07

为了运行脚本,您可以打开Matlab (您可以防止在没有图形用户界面的情况下使用-nodisplay和-nodesktop标志运行它),然后使用run命令运行脚本,最后使用exit关闭matlab。

只需一条指令,您就可以从终端完成所有这些操作:

代码语言:javascript
复制
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"

但是,在运行脚本之前,Matlab会将欢迎消息输出到控制台。要删除欢迎消息,只需使用tail -n +11跳过前11行(10行,取决于您的Matlab版本)

所以你的最终指令是:

代码语言:javascript
复制
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11
票数 35
EN

Stack Overflow用户

发布于 2020-04-28 03:56:31

从R2019a开始,对于test.m脚本,首选方法是:

代码语言:javascript
复制
matlab -batch "test"

这有几个优点,主要是不需要所有的-no标志,如果test.m (必须在搜索路径上)包含错误,MATLAB将以非零状态退出。

在文档页面中,matlab (Linux)

以非交互方式执行MATLAB脚本、语句或函数。MATLAB:

如果脚本执行成功,

  • 启动时不会显示桌面的启动和更改工具箱caching
  • Logs text to preferences
  • Disables和stderr
  • Does not display对话框
  • 会自动退出,退出代码为0。否则,MATLAB将以非零退出代码终止。

语句是用双引号括起来的MATLAB代码。如果语句是MATLAB函数或脚本的名称,请不要指定文件扩展名。所需的任何文件必须位于MATLAB搜索路径或启动文件夹中。

在非交互式脚本或命令行工作流中使用-batch选项。请不要将此选项与-r选项一起使用。

要测试某个MATLAB会话是否在批处理模式下运行,请调用batchStartupOptionUsed函数。

示例:-batch "myscript"

票数 25
EN

Stack Overflow用户

发布于 2019-07-28 18:59:44

我创建了一个名为runm的基本外壳脚本并将其放入我的路径中:

代码语言:javascript
复制
$ runm mymatlab.m

脚本:

代码语言:javascript
复制
# simple script to run matlab script
if [ $# -eq 0 ]
  then
    echo "please pass m script"
fi

matlab -nodisplay -nosplash -nodesktop -r "run('$1');"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38723138

复制
相关文章

相似问题

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