我该如何创建累积矩阵

时间:2015-02-03 06:23:15

标签: matlab

我有一个问题。

我有一个大小为G的矩阵(500,500)。我想创建G的累积矩阵。我知道我可以写点什么:

c=reshape(G,1,[])
c1=cumsum(c);

在下一步中,我必须将c1转换为另一个矩阵,例如c2,其大小为(500,500),现在是矩阵G的累积。但我想创建矩阵c2而不重塑矩阵G。实际上我想直接创建G的累积矩阵。

有什么办法吗?

谢谢

2 个答案:

答案 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(:));