首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中加速索引子数组?

在matlab中加速索引子数组?
EN

Stack Overflow用户
提问于 2014-09-13 23:53:58
回答 1查看 60关注 0票数 0

如何提高以下操作的速度?瓶颈是第三行,尽管对于大尺寸的A1,第四行是相当快的。第三行是否真的复制了存储在A1中的A(b,b)?

代码语言:javascript
复制
A = randn(1000,1000);
b = [67   145   200   185    11   166    80   137   163   132   133    19]; %random 
A1 = A(b,b);
v=A1*A(2,b)';

请注意,下面的代码同样很慢,所以我将这一行分成两部分,以演示上面的第三行是瓶颈。

代码语言:javascript
复制
v=A(b,b);*A(2,b)';
EN

回答 1

Stack Overflow用户

发布于 2014-09-14 00:07:23

看看这是否能更快地替代你所说的瓶颈第三条线路-

代码语言:javascript
复制
[x,y]= ndgrid(b,b);
A1 = A((y-1)*size(A,1)+x);

代码语言:javascript
复制
A1 = A(bsxfun(@plus,(b-1)*size(A,1),b'));

编辑:使用上面列出的代码进行性能分析后,运行时性能看起来并没有多大提高。您在注释中提到,您在循环中多次使用这些代码,并且b会有所不同。如果循环计数是一个很小的值,而b是这些循环迭代之间的常量,那么可以考虑在所有迭代中执行所有这些矩阵-向量乘法,并将其转换为一个大的矩阵-矩阵乘法,但这里的情况并非如此。因此,在这一点上,我想说indexing的瓶颈可能不得不留下来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25824948

复制
相关文章

相似问题

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