for循环操作花费的时间太长

12个视图(30天)
SChow
SChow 2020年10月6日
评论道: SChow2020年10月6日
我有一个矩阵(b1和popx)规模25000 x50000,代码是一个向量包含惟一值在b1(长度300)。在popx元素对应于每一个独特的b1的价值,我需要popx的总和,
下面的代码需要很长(> 2小时),感谢任何帮助降低计算时间
i =施用
popx1 = popx;
popx1 (b1 ~ =代码(i)) =南;
popn = nansum (nansum (popx1));
popn1 (i) = popn;
结束;

接受的答案

乔斯(10584)
乔斯(10584) 2020年10月6日
预分配和重新编码使用逻辑索引和总和应该加快速度
popn1 =南(300 1);%预
i =施用
tf b1 = = =代码(我);
popn1 (i) =总和(popx (tf),“所有”);
结束;
1评论
SChow
SChow 2020年10月6日
更快,谢谢

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!