【问题标题】:How can I run matlab m file with arguments and handle that argument in m file?如何运行带有参数的 matlab m 文件并在 m 文件中处理该参数?
【发布时间】:2014-12-16 08:40:27
【问题描述】:

如何运行带有参数的 matlab m 文件?
我可以在带有参数的八度音阶中运行相同的代码,但我在 matlab 中找不到 相应的代码。 在带有参数的命令行上运行 m 文件后,我需要在 m 文件中处理该参数。 以下是完美运行的相应倍频程代码:

#! /usr/bin/octave -qf

argList = argv();

下面是完美运行上述m文件的命令:

./solver.m this_is_argument_of_m_file

对应的matlab代码是什么?

更新: 命令行是指操作系统命令行(终端、windows cmd),而不是matlab命令行。

【问题讨论】:

  • matlab -nosplash -nodesktop -r "solver.m 'arg1(string)';exit"

标签: matlab command-line-arguments octave


【解决方案1】:

您应该知道脚本和函数之间是有区别的。 Mathworks 已将documentation 的一部分用于此差异。

脚本不接受输入参数,函数可以,但不需要。 您可以将函数识别为 m 文件中的第一个函数代码是 function。函数使用自己的工作区,脚本使用 matlab 的基础工作区。

例如:

function out = fcn_name(in1, in2, varargin)

此外,您可以在 matlab 中使用 OO 进行编程,但我认为您应该开始阅读上面的链接。

有关启动命令,请查看文档的this 部分。您可能需要使用-r 选项。

【讨论】:

  • 好的,我明白了,谢谢。现在我想纠正我的问题。通过命令行,我的意思是操作系统命令行(终端,windows cmd),而不是 matlab 命令行。再次感谢。
【解决方案2】:

在windows cmd提示符下,可以如下运行:

"C:\PATH_TO_MATLAB\matlab.exe" -nosplash -nodisplay -nodesktop -r "run('C:\PATH_TO_M-FILE\mfile.m');"

这将使 matlab 继续运行;然后可以使用exit 命令将其关闭。

在 linux 上也可以采用同样的方法:

./PATH_TO_MATLAB/matlab -nosplash -nodisplay -nodesktop -r < /PATH_TO_M-FILE/mfile.m

某些版本的 matlab 似乎反对在其中包含“.m”部分 - 如果它引发错误,请尝试删除扩展名...

针对您的评论,仅限 Linux(我没有安装 Windows 来试用它),如果您将系统配置为只需在您的系统中键入 matlab 即可运行 matlab终端。您可以通过创建符号链接 (sudo ln -s PATH_TO_MATLAB_EXECUTABLE /usr/bin/) 进行设置。然后在终端运行:

cd PATH_TO_FUNCTION_YOU_WANT && matlab -nosplash -nodisplay -nodesktop -r 'mfile(args)'

确保不包含.m,引号中的所有内容都直接传递给matlab。如果用分号分隔它们,则可以包含多个函数。我不知道将字符串作为参数传递是如何工作的......

【讨论】:

  • 这个命令的argument参数在哪里?你刚刚运行了 m 文件。没有论据。这不是我要找的。​​span>
  • @Celik 我已经更新了解决方案来解决这个问题 - 我没有完全理解你的问题。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 2013-11-14
  • 1970-01-01
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多