我有一个向量,

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/

10-15 00:52