首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个乘法速度这么慢

为什么这个乘法速度这么慢
EN

Stack Overflow用户
提问于 2014-05-28 10:37:40
回答 1查看 106关注 0票数 3

我想把两个矩阵相乘。我需要把它们逐元素相乘。它们的尺寸是100x100。但是为什么这个函数工作得很慢呢?大约2-3分钟。

代码语言:javascript
复制
for i=1:size(volumes,1)
  for j =1:size(volumes,2)
      ys(i,j) = volumes(i,j)*prices(i,j)

  end
end

如何加快这一行动?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 10:52:42

我认为最主要的问题是,您忘记了行尾的分号;,在这里进行计算。因此,您将在命令窗口中显示结果的100x100矩阵ys 10000。看上去很费时。(2到3分钟的时间还是太多了)。

此外,您还应该预分配 ys。否则,ys在每次迭代时都会按顺序增长,可能会发生内存不足和ys需要复制到内存中不同位置的情况,这也需要时间。通过预先分配,您可以为整个循环预留空间。你可能会发现这个答案很有趣。

因此:

代码语言:javascript
复制
ys = zeros(size(volumes));
for i=1:size(volumes,1)
  for j =1:size(volumes,2)
      ys(i,j) = volumes(i,j)*prices(i,j);
  end
end

一切都会好起来的。

但是除了之外,还可以使用 元素乘法算子 .*

代码语言:javascript
复制
ys = volumes.*prices;
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23909302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档