在什么情况下可以将文字传递:
给 Matlab 函数?我通过实验发现,有时,文字:
作为 string 传递':'
,但在其他情况下,会引发错误。例如:
>> type writeargs
function writeargs(varargin)
disp(varargin);
end
>> writeargs(:)
Undefined variable writeargs.
>> writeargs(:, 1)
Undefined variable writeargs.
>> writeargs(:, 1, :)
':' [1] ':'
>> writeargs(:, :, :)
':' ':' ':'
>> writeargs(1, 2, :, 4, 5)
[1] [2] ':' [4] [5]
>> writeargs(1, 2, :, end)
Error using writeargs
Too many output arguments.
我的印象是,如果至少传递了三个参数,则允许使用此语法。这似乎是任意的。这里的法律语法是什么?
编辑:评论要求用例。一个用例可能是每当我的参数将用作切片或索引时。在 Python 代码中,我遇到过将切片对象传递给方法的情况。一个用例是受此答案启发的函数,其中使用一个小函数来规避 Matlabs 无法解释的问题magic(5)(3, :)
,并且可以编写一个辅助函数并使用paren(magic(5), 3, :)
.