在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()
来初始化变量名称。问题是在我感兴趣的应用程序中,我不知道事前的变量名称。