gpt4 book ai didi

matlab - 在 Matlab 中,log(a*b) 是否总是比 log(a) + log(b) 快?

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:24 26 4
gpt4 key购买 nike

在 Matlab 中,log(a*b) 总是比 log(a) + log(b) 快吗?

我测试了几个输入,似乎 log(a*b) 更快。有经验的大佬能给点意见吗?也许警告说情况可能并非总是如此,或者什么的否则我应该小心?所以在第一种情况下我们有一个日志操作和 1 个乘法,在第二种情况下,我们有两个对数运算和一个求和。

编辑:

添加到我的原始帖子中,更普遍的问题是:

log (a*b*...*z) 是否总是比 log(a) + log(b) + ... + log(z) 快?

谢谢

最佳答案

log(a*b) 应该总是更快,因为计算对数的成本很高。在 log(a*b) 中你只做一次,在 log(a)+log(b) 中你做两次。

与对数、指数等相比,计算乘积和求和是微不足道的。就处理器周期而言,求和和乘积通常都小于 5,而对于某些架构,指数和对数可以达到 50 到 200 个周期。

Is log (a*b*...*z) always faster than log(a) + log(b) + ... + log(z)

是的。确实。尽可能避免计算对数。

这是一个小实验:

a=rand(5000000,1);

% log(a(1)*a(2)...)
tic
for ii=1:100
res=log(prod(a));
end
toc
% Elapsed time is 0.649393 seconds.

% log(a(1))+log(a(2))+...
tic
for ii=1:100
res=sum(log(a));
end
toc
% Elapsed time is 6.894769 seconds.

在某个时候,时间比率会饱和。它饱和的位置取决于您的处理器架构,但差异至少有一个数量级。

关于matlab - 在 Matlab 中,log(a*b) 是否总是比 log(a) + log(b) 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18386451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com