在matlab中没有循环的向量中的数字总和

时间:2017-05-15 14:34:11

标签: matlab performance loops sum

我有一个长度为L的向量。我想在MATLAB中没有循环地对每个N数字求和,以节省模拟时间。

例如,如果矩阵为<{1}}和L=10

N=2

矩阵A=[1,1,3,3,0,2,4,4,6,2] 应为

B

,其中

B=[2,6,2,8,8]

2 个答案:

答案 0 :(得分:3)

B = sum(reshape(A, 2, []));

如果A的长度可以是奇数:

n = floor(numel(A)/2) * 2;
B = sum(reshape(A(1:n), 2, []));

答案 1 :(得分:3)

您可能也在考虑使用movsum。

C = movsum(A,2);
B = C(2:2:end);

我评估它的表现为B = sum(reshape(A, 2, [])); Movsum大约是重塑时间的2倍。但它为非偶数长度向量提供了一些灵活性和运行。