将每个n个元素相加并存储在另一个矢量matlab中

时间:2018-04-04 18:36:38

标签: matlab vector sum

我有以下功能:

b = [-1 1];
m = b(randi(length(b),1,nsimul*n));

有没有办法对每个n个元素求和并存储在另一个向量中?

示例:

b = [-1 1];
m = b(randi(length(b),1,5*2));
m
m =
        1    -1     1    -1     1    -1    -1     1     1    -1
A(1) = m(1) + m(2);
A(2) = m(3) + m(4);
A(3) = m(5) + m(6);
A(4) = m(7) + m(8);
A(5) = m(9) + m(10);
A
A = 
        0     0     0     0     0

2 个答案:

答案 0 :(得分:1)

您可以使用vec2mat将矢量重塑为适合您想要求和的元素数量的维度矩阵,并且您只需要将正确的维度相加。
vec2mat很好,因为如果您选择与NxM矩阵不相称的元素数,它会用0填充一维向量的提醒,例如:

<UserControl.Resources>

更一般地说,让我们调用vec2mat(m,2) ans = 1 -1 1 -1 1 -1 -1 1 1 -1 你想要求和的元素数量,然后:

n_elements

但是如果1D向量和元素数量总是相称并且不需要填充,则可以使用旧的 n_elements=2; a=sum(vec2mat(m,n_elements),2) ,如下面的评论所述......

答案 1 :(得分:0)

以下代码段应该提供您要查找的内容:

% Define the parameters...
nsimul = 5;
n = 2;
b = [-1 1];

% Compute the final result...
m = b(randi(length(b),1,nsimul*n));
k = sum(reshape(m,n,[]).',2);

例如,给出了矢量:

m = [-1 -1  1  1 -1 -1 -1  1  1  1]

最终结果s将是:

s = [-2  2 -2  0  2]

reshape函数给出的中间结果k等于:

k = [
 -1  -1
  1   1
 -1  -1
 -1   1
  1   1
]
相关问题