如何运行带参数的 matlab m 文件?
我可以使用参数在八度音程中运行相同的代码,但我在 matlab 中找不到对应的代码。
在命令行上使用参数运行 m 文件后,我需要在 m 文件中处理该参数。
这是完美运行的相应八度代码:
#! /usr/bin/octave -qf
argList = argv();
以下是完美运行上述 m 文件的命令:
./solver.m this_is_argument_of_m_file
对应的matlab代码是什么?
更新: 我所说的命令行是指操作系统命令行(终端、windows cmd),而不是matlab命令行。
在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。如果用分号分隔它们,则可以包含多个函数。我不知道如何将字符串作为参数传递......
您可以设置参数,并获取函数来拾取它们。这是我的 *.m 文件中的一个示例...
if ~exist("seq", "var")
seq = "ball";
else
seq = deblank(IIR_seq);
endif
if ~exist("scale", "var")
scale = 30.0
end
如果变量未定义,则分配一个值。在第一种情况下,这是一个字符串,我们从提供的参数中剪掉任何尾随空格和空值。在第二种情况下,它是一个浮点值。我还没有检查数据类型,但 Octave / Matlab 应该可以处理。