【发布时间】:2014-11-26 09:22:53
【问题描述】:
我想执行一个非常简单的计算 - 我有一个矩阵 A,每一行都有一个值。
我想循环遍历矩阵,从数组中的最后一个值中减去前一个值,依此类推,通过矩阵向后工作。结果应作为一行添加到矩阵 B ea 中。
这不应该花很长时间,但循环会持续几分钟,我认为是因为我没有正确预分配矩阵 B 并且每个循环的大小都会增长。我不确定如何正确地做到这一点。
我的代码:
matrixB = [];
for alfa=25471: -1: 2,
row = matrixA(alfa)-matrixA(alfa-1)
matrixB = [row;matrixB]
end
【问题讨论】:
-
简单的
diff(matrixA)应该这样做。 -
谢谢!我应该知道的。
-
要预分配
matrixB,首先获取matrixA' byn=length(matrixA)`的大小并分配matrixB = zeros(n-1,1);。然后通过matrixB(alfa-1) = row;写信给它。正如 Divakar 提到的,使用diff当然是更好更快的解决方案。
标签: matlab loops memory-management