【发布时间】:2012-06-11 07:19:46
【问题描述】:
我的数据是 double 值的 2096x252 矩阵。我需要一个 for 循环或执行以下操作的等效项:
每次复制矩阵时,第一个数组被删除,第二个成为第一个。当循环再次运行时,剩余的矩阵被复制,第一个数组被删除,下一个成为第一个,依此类推。
我试过使用repmat,但是在处理大型矩阵(2096x252)时它太慢而且太乏味了。
示例输入:
1 2 3 4
3 4 5 6
3 5 7 5
9 6 3 2
期望的输出:
1 2 3 4
3 4 5 6
3 5 7 5
9 6 3 2
3 4 5 6
3 5 7 5
9 6 3 2
3 5 7 5
9 6 3 2
9 6 3 2
【问题讨论】:
-
如果我正确理解了您的问题,您的最终矩阵的大小将是
2197656 x 252,我认为它的大小将超过 4.4GB。您确定这里的限制因素不是内存,而是算法的速度吗? -
如果内存是一个限制因素,那么您是否可以容纳代码来拼接和切块数据,这样就不会有问题了。
标签: performance matlab loops for-loop copy