gpt4 book ai didi

matlab - nargin vs 存在

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:03 26 4
gpt4 key购买 nike

给定一个函数:

function foo(myParam)
if nargin<1
myParam = 'default value';
end % if
end % function

我见过有人用类似下面的东西代替 nargin 版本

if ~exist('myParam', 'var')
myParam = 'default value';
end %if

我想知道这两种方式是否有任何偏好?

对我来说,“~exist...”版本的优点是,如果我更改函数参数的顺序,它应该仍然有效。然而,我对这种方法的担忧是,在嵌套函数的情况下,我可能会无意中获取全局定义或在周围函数范围内定义的变量。

对这个问题有什么想法吗?

最佳答案

两者都应该有效。但是……

Exist 往往很慢,因为它必须在您的工作区中查找相关变量。当您编写这样的错误检查时,您不希望它们耗尽 CPU 周期。针对 nargin 的测试是针对单个数值的简单测试。

我通常还建议进行更广泛的测试。有点像

if (nargin<1) || isempty(myparam)

myparam = defaultvalue;

elseif

...

end

在 elseif 分支中,我将进行一组额外的测试,以查看参数是否具有预期的大小、形状、变量类等。如果这些测试失败,我将返回一条友好的错误消息,解释怎么了。

关于matlab - nargin vs 存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733646/

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