如何运行带有参数的matlab m文件并在m文件中处理该参数?

kninwzqo  于 6个月前  发布在  Matlab
关注(0)|答案(3)|浏览(143)

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

#! /usr/bin/octave -qf

argList = argv();

字符串
下面是运行上述m文件的命令:

./solver.m this_is_argument_of_m_file

  • 相应的matlab代码是什么?*
    更新: 我所说的命令行是指操作系统命令行(终端、windows cmd),而不是matlab命令行。
dy1byipe

dy1byipe1#

你应该知道脚本和函数之间是有区别的,Mathworks专门为这个区别设计了documentation的一部分。
脚本不接受输入参数,函数可以,但不需要。你可以识别一个函数,因为m文件中的第一个函数代码是function。函数使用自己的工作区,脚本使用matlab的基本工作区。
举例来说:

function out = fcn_name(in1, in2, varargin)

字符串
此外,你可以在matlab中使用OO编程,但我认为你应该开始阅读上面的链接。
对于启动命令,请查看文档的this部分。您可能希望使用-r选项。

vptzau2j

vptzau2j2#

在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 only(我没有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。如果你用引号分隔它们,你可以包含多个函数。我不知道如何将字符串作为参数传递。

suzh9iv8

suzh9iv83#

您可以设置参数,并获取脚本来拾取它们。下面是我的 *.m文件中的一个示例...

if ~exist("seq", "var")
  seq = "ball";
else
  seq = strtrim(seq);
endif 

if ~exist("scale", "var")
  scale = 30.0
end

字符串
如果变量是未定义的,脚本会分配一个默认值。在第一种情况下,这是一个字符串,我们从提供的参数中删除任何悬空的空格。在第二种情况下,它是一个浮点值。我没有检查数据类型,但Octave / Matlab应该处理这个问题。
您可以(某种程度上)像这样将参数传递给myScriptFile.m.

seq = "fish"; scale = 10.0; myScriptFile


这并不像传递命名参数那样简洁。这些值会持续存在,如果你不保持头脑清醒的话,可能会干扰你的下一次调用。但这对于快速原型设计来说是好的。我的很多东西从来没有变成产品,而且那些确实需要整理的部分。这就是它。

相关问题