Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
记录MATLAB函数重载(变量参数),因此使用弹出窗口很有帮助_Matlab_Function_Overloading_Code Documentation - Fatal编程技术网

记录MATLAB函数重载(变量参数),因此使用弹出窗口很有帮助

记录MATLAB函数重载(变量参数),因此使用弹出窗口很有帮助,matlab,function,overloading,code-documentation,Matlab,Function,Overloading,Code Documentation,我正在编写MATLAB函数供其他人使用。我知道如何使用nargin,varargin等创建具有可变输入数的函数 我目前正在编写的函数是递归的,我需要传递一个参数来处理递归,但是用户不应该为该参数传递任何内容(或者他们应该传递非直观的起始值,但他们不需要为此分心)。我想对用户“隐藏”这个参数,这样当他们编写使用这个函数的代码时,MATLAB会弹出一个黄色的小窗口,告诉他们函数采用了什么参数,它只会提示他们输入他们关心的参数 更明确地说,当您键入rand()时,MATLAB会弹出一个带有 兰德()

我正在编写MATLAB函数供其他人使用。我知道如何使用
nargin
varargin
等创建具有可变输入数的函数

我目前正在编写的函数是递归的,我需要传递一个参数来处理递归,但是用户不应该为该参数传递任何内容(或者他们应该传递非直观的起始值,但他们不需要为此分心)。我想对用户“隐藏”这个参数,这样当他们编写使用这个函数的代码时,MATLAB会弹出一个黄色的小窗口,告诉他们函数采用了什么参数,它只会提示他们输入他们关心的参数

更明确地说,当您键入
rand(
)时,MATLAB会弹出一个带有

兰德()
兰德(n)
兰德(sz1,…,szN)

我的函数递归地构建一个矩阵,目前我已经这样定义它:

function ret = M(arg1, arg2, HideThisRecursiveArgument)
  % code that sets the starting value for HideThisRecursiveArgument when it's not passed
  % code that calls M(...) again with a different recursion value
end
当用户键入
M(
)时,我希望MATLAB的小帮助弹出窗口将用法显示为:

M(arg1,arg2)

arg1
arg2
是以自描述性的方式命名的,因此这对于我的功能来说是一个足够的“帮助页面”。)

如何记录此用法,以便MATLAB的函数用法帮助弹出窗口将其显示给用户?

如果我使用varargin,用户可能会因为试图找出可以传入的其他参数而分心/困惑,因此这是不令人满意的。我尝试用两个参数定义我的函数,然后在调用时寻找第三个参数,但MATLAB不喜欢这样

编辑
我已经找到了页面,如果用户使用
help
命令或单击黄色用法弹出窗口中的“更多帮助…”链接,我可以控制他们在那里看到的内容,但这并不能告诉我如何控制用法弹出窗口上显示的内容。

我会选择两个单独的界面,外部调用的函数和内部递归带隐藏参数的ive函数:

function z=foo(x,y)
    z=internalfoo(x,y,pi);   
end
function z=internalfoo(x,y,secret)
    if x>y
        z=internalfoo(y,x,secret);
    else
        z=secret*x;
    end
end

您可以将两者放在同一个文件foo.m中,只有foo()可以在外部调用(除非您做了一些讨厌的事情)。上面的示例包含一个。根据您的任务,使用共享变量的a有时对递归很实用。

谢谢!这满足了我对该函数的迫切需要。我希望能够在该上下文中输出多行文本,以帮助其他函数,因此我将保留问题,希望有更好的解决方案。哦,您是对的,完全错过了你问题的那一部分。第一次阅读你的问题时,我认为那只是“帮助兰德”的摘录,但它是一些不同的文本。相关:不确定为什么主持人删除了Edric的答案。他指出。它基本上满足了问题的要求,但在MATLAB实时脚本中。键入
myfun时(
在编辑器中,它仍然显示代码中指定的参数,而不像一些内置参数,如
rand(
)。