Matlab exp产生意想不到的结果

时间:2015-04-04 13:10:27

标签: arrays matlab exp

作为一个Matlab-noob,我一直在尝试使用exp函数。 我发现的是推杆:

a = 1.1
b = 5
test = exp (a+b)

产生了期望的(正确的)答案。 (test = 445.8578)

然而:用矩阵替换a给出了完全错误的结果。所以

a = [1.1 1.3 2.5 4.3]
b = 5
test = exp(a+b)

产生了错误的结果(test = 1.0e + 04 *

0.0446 0.0545 0.1808 1.0938)

我可能会忽视某些事情,但我不知道自己哪里出错了。 谁能开导我?

2 个答案:

答案 0 :(得分:2)

它产生正确的结果:

a = [1.1 1.3 2.5 4.3];
b = 5;
c = a + b

c = 
  6.1    6.3    7.5    9.3

现在让我们计算每个值的指数函数(稍微舍一点):

exp(6.1) =    445.86
exp(6.3) =    544.6
exp(7.5) =  1'808.0
exp(9.3) = 10'938

您可以通过

获得相同的结果
exp(c)

ans = 
    1.0e+04 *
     0.0446    0.0545    0.1808    1.0938

这意味着您必须将每个打印元素与1.0e+04 = 10'000相乘,这是正确的结果。

这是MATLAB的标准输出格式,它可以快速查看不同值的大小。有几种不同的格式(有关更多详细信息,请参阅documentation)。有趣的可能是shortG

format shortG
exp(c)
ans =
    445.86       544.57         1808        10938

这正是您的预期。如你所见:它只是输出格式。

答案 1 :(得分:1)

它给出了正确的答案,它只是以指数格式呈现:1.0e+04 * 0.0446445.8578相同。

您可以尝试评估test(1)来验证这一点。