如何用动态变量掩盖内置函数

时间:2017-04-07 12:03:12

标签: matlab

在Matlab中使用assignin动态创建变量时,当变量名与现有函数名冲突时,这不起作用。这是一个例子:

function test(  )
    f()
    Beta
    beta
end

function f()
    assignin('caller','Beta',1)
    assignin('caller','beta',1)
end

评估beta失败,因为它未被识别为变量。

>> test

Beta =

     1

Not enough input arguments.

Error in beta (line 19)
y = exp(betaln(z,w));

Error in test (line 5)
    beta

显然这是因为初始JIT编译识别函数调用,并且不会通过动态创建的变量覆盖现有函数(在本例中为统计工具箱中的beta函数)。

我的问题是,是否有办法强制使用assignin使功能蒙上阴影,使上面的示例代码有效。

PS:一种方法是通过在beta=[];的第一行添加test()来初始化变量名称。问题是在我感兴趣的应用程序中,我不知道事前的变量名称。

0 个答案:

没有答案