如何调用一个从命令行接收文本输入的Matlab函数?

4
我正在从事一项医疗机器人项目,该项目捕获一系列图像并在MATLAB中对其进行一些处理。由于还需要在MATLAB之外完成其他许多工作,因此我使用另一种语言来进行整体控制,并使用控制台命令触发其他部分。
我有一个单一的.m文件和一个单一的函数,该函数获取图像所在目录的文件路径并执行所有MATLAB处理。如何从命令行调用它?我看到一些其他答案中讨论了matlab -r "function(input)",但对我不起作用(我得到了一个开括号的语法错误)。更具体地说,我得到:matlab:eval:第1690行:附近意外符号 '('
我看到一些人说必须通过调用shell脚本来完成这个操作(我不知道如何编写),但也有其他人说可以不用,有人能说明一下吗?
此外,假设我仅仅是搞砸了matlab -r语法,MATLAB如何知道在哪里找到.m文件?它是否需要在我运行命令的目录中?
1个回答

4

我猜你是在尝试:

matlab -r test('hi')

并且获取...

bash: syntax error near unexpected token `('

或类似的东西?

答案:你需要使用" "function(input)包裹起来,即:

matlab -r "test('hi')"

这个命令在我当前的目录中运行test.m程序,并输入字符串'hi'

如果你想在一个名为runmatlabcommand.sh的shell脚本中实现这个功能,比如说bash,你可以打开一个文件并写入以下内容:

#!/bin/bash
matlab -r "test('hi')"

然后在命令行中输入./runmatlabcommand.sh来执行此脚本。在尝试运行之前,请确保该脚本具有执行权限;)


啊,问题中实际上有错别字。我正在执行 matlab -r "function(input)",就像你描述的那样加了引号。我需要在输入周围加上撇号吗? - Oblivious Sage
只有当“input”是字符串时。 - dinkelk
@Oblivious Sage 你确定你的脚本在当前目录里吗? - dinkelk
是的,我只是在使用终端测试它,并在调用命令之前明确移动到.m脚本所在的目录。我在输入字符串周围添加了撇号,但在开括号处仍然出现相同的错误。我将精确的错误消息添加到问题中。 - Oblivious Sage
@Oblivious Sage 啊!这是一个语法错误,来自于你的 MATLAB 脚本中格式不正确的代码。当你从 MATLAB 终端运行脚本时,你是否会得到相同的错误? - dinkelk
啊,是的!好的,这解释了一切。谢谢dinkelk! - Oblivious Sage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接