MatLab:相同的函数得到两个不同的结果

时间:2014-10-15 21:49:48

标签: matlab function mat

我在Windows计算机上的2013a和2014a中看到以下行为:

有人给我发了一个.mat文件。在该文件中,定义了函数fi(th,beta)。在命令行中,我为两个值调用fi(实际上beta是一个矩阵)。然后,我点击“编辑值”为fi,不要改变任何东西。然后,当我再次调用fi(th,beta)时,我得到一个完全不同的值。

这怎么可能?我怎么知道什么是“正确的”值?

1 个答案:

答案 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

我希望这可以解决您的问题。

因此,关于正确值的问题取决于函数句柄中使用的值和函数句柄。