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

问题描述 投票:0回答:3

如何运行带参数的 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 command-line-arguments octave
3个回答
0
投票

您应该知道脚本和函数之间是有区别的。 Mathworks 在文档中专门介绍了这一差异。

脚本不接受输入参数,函数可以,但不需要。 您可以识别一个函数,因为 m 文件中的第一个函数代码是

function
。函数使用自己的工作空间,脚本使用 matlab 的基础工作空间。

例如:

function out = fcn_name(in1, in2, varargin)

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

有关启动命令,请检查文档的this部分。您可能需要使用

-r
选项。


0
投票

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


0
投票

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

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

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

如果变量未定义,则分配一个值。在第一种情况下,这是一个字符串,我们从提供的参数中剪掉任何尾随空格和空值。在第二种情况下,它是一个浮点值。我还没有检查数据类型,但 Octave / Matlab 应该可以处理。

© www.soinside.com 2019 - 2024. All rights reserved.