我有一个问题。
我有一个大小为G
的矩阵(500,500)
。我想创建G
的累积矩阵。我知道我可以写点什么:
c=reshape(G,1,[])
c1=cumsum(c);
在下一步中,我必须将c1转换为另一个矩阵,例如c2
,其大小为(500,500)
,现在是矩阵G
的累积。但我想创建矩阵c2
而不重塑矩阵G
。实际上我想直接创建G
的累积矩阵。
有什么办法吗?
谢谢
答案 0 :(得分:1)
除了我之前发布的评论之外,通过进行以下更改,您可以实现大约20%的加速(至少对于我的机器而言大约为20%):
(原始代码)
G=randi([0 255],[500 500]);
c=reshape(G,1,[]);
c1=cumsum(c);
c2 = reshape(c1,[500 500]);
(现在没有存储不必要的变量)
c2 = reshape(cumsum(reshape(randi([0 255],[500 500]),1,[])),[500 500]);
答案 1 :(得分:0)
如果要累积每列,然后继续下一列,可以使用
G = rand(5,5); %// example data
G(:) = cumsum(G(:));