我在Windows计算机上的2013a和2014a中看到以下行为:
有人给我发了一个.mat文件。在该文件中,定义了函数fi(th,beta)。在命令行中,我为两个值调用fi(实际上beta是一个矩阵)。然后,我点击“编辑值”为fi,不要改变任何东西。然后,当我再次调用fi(th,beta)时,我得到一个完全不同的值。
这怎么可能?我怎么知道什么是“正确的”值?
答案 0 :(得分:0)
问题背后的原因是,在功能句柄上单击编辑值时,会更新。在您的函数中,使用 D ,这是在创建函数句柄期间的变量。假设 D 现在有另一个值, fi 将在按编辑值后使用新值。让我举个例子:
>> k = 2;
>> f = @(x)k*x;
>> f(4)
ans =
8
>> k = 4;
>> f(4)
ans =
8
在此示例中,在 f 定义后更改 k 。但是, f 将具有其原始定义。当我使用编辑值并且不更改任何内容时,它仍将使用 k 的新值。
>> f % only to show the function has not changed
f =
@(x)k*x
>> f(4)
ans =
16
我希望这可以解决您的问题。
因此,关于正确值的问题取决于函数句柄中使用的值和函数句柄。