我有一个向量,
A= [2;3;4;5;6;7];
我想引入一个名为
K
的变量。如果'K'的值是1
,那么我将得到与输出相同的值。但是,如果K
的值为2
,那么我期望输出向量为:output= [2+3;4+5;6+7];
如果
K
的值为3
,那么我的输出将是:output= [2+3+4;5+6+7];
另外,我们可以安全地假定
A
中的元素总数可以被K
整除。对于专家来说,这也许是一个愚蠢的问题,但是在这种情况下,我将非常感谢您的指导。 最佳答案
假设A
中的元素数可被K
整除,则可以使用一些重塑和求和,如下所示-
sum(reshape(A,K,[]),1)
样品运行
输入:
A =
2
3
4
5
6
7
运行#1:
>> K = 2;
>> reshape(A,K,[])
ans =
2 4 6
3 5 7
>> sum(reshape(A,K,[]),1)
ans =
5 9 13
运行#2:
>> K = 3;
>> reshape(A,K,[])
ans =
2 5
3 6
4 7
>> sum(reshape(A,K,[]),1)
ans =
9 18
如果A中的元素数不能被K整除,则可以使用
vec2mat
中的Communications System Toolbox
,如下所示-sum(vec2mat(A,K).',1) %// OR sum(vec2mat(A,K),2)
样品运行
A =
2
3
4
5
6
7
8
9
运行#1:
>> K = 2;
>> vec2mat(A,K).'
ans =
2 4 6 8
3 5 7 9
>> sum(vec2mat(A,K).',1)
ans =
5 9 13 17
运行#2:
>> K = 3;
>> vec2mat(A,K).'
ans =
2 5 8
3 6 9
4 7 0
>> sum(vec2mat(A,K).',1)
ans =
9 18 17
关于matlab - 在向量中将K值的不同块加在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33834975/