gpt4 book ai didi

matlab - 记录 MATLAB 函数重载(变量参数),以便使用弹出窗口很有帮助

转载 作者:行者123 更新时间:2023-12-02 19:39:07 27 4
gpt4 key购买 nike

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

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

更明确地说,当您输入 rand( 时,MATLAB 会弹出一个小帮助窗口

rand()
rand(n)
rand(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)

(arg1arg2 以 self 描述的方式命名,因此这对于我的函数来说是一个足够的“帮助页面”。)

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

如果我使用 varargin,用户可能会因为试图弄清楚还可以传入什么内容而分心/困惑,所以这是不令人满意的。我尝试过用 2 个参数定义函数,然后在调用时寻找第三个参数,但 MATLAB 不喜欢这样。

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

最佳答案

我会选择两个单独的接口(interface),外部调用的函数和带有隐藏参数的内部递归函数:

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() 可以被外部调用(除非你做了一些令人讨厌的事情)。上面的示例包含 local function 。根据您的任务 nested function使用共享变量有时对于递归来说很实用。

关于matlab - 记录 MATLAB 函数重载(变量参数),以便使用弹出窗口很有帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60571136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com