.=+在Julia中是什么意思?



我是Julia的新手,我正在努力使我的程序尽可能高效。我的程序需要用矩阵计算很多东西,我偶然发现了广播运算符,它让一切都加快了很多。然而,现在我发现了另一种特殊的计算方法。

第一个版本是:(都是NxN矩阵)'

hist .= hist .+ mask

我的算法包括这一行,每次迭代大约运行1秒。

现在我想聪明一点,把.=.+结合起来,所以我尝试了.+=,因为+=可以工作,我只需要广播它。然而,正如你可能知道的,这并没有工作。

我不小心尝试了这个版本的代码:

hist .=+ mask

令人惊讶的是,这将运行时间缩短到0.2秒

谁能给我解释一下.=+的意思,为什么它不是.+=?或者是一样的吗?提前感谢!

编辑:我的IDE是为什么.+=不工作的问题。然而,这是正确的做法!

如注释所述,.=+在Julia中不是操作符。您正在寻找.+=.

为了解释您观察到的行为,hist .=+ mask解析为hist .= (+mask),在这种情况下,相当于广播赋值hist .= mask,将mask的每个元素赋值给hist的相应元素。这比hist .+= mask要快,因为.=+并没有像你想象的那样。它会跳过加法。

相关内容

  • 没有找到相关文章

最新更新