在没有for循环的情况下在Matlab中将数据范围发送到另一个数据范围

时间:2013-12-04 13:24:48

标签: matlab loops indexing

所以这就是我所拥有的:

index : [3;4;5;6;7;8;9] 我有一个与该索引相对应的向量:

inVector = [10;20;30;40;50;60;70;80;90]

我想要的是我得到了invector中每3行的平均值。因此,

outVector = mean(inVector[index - 2 : index]);

因此,outVector现在有[20;30;40;50;60;70;80];

1 个答案:

答案 0 :(得分:1)

对于任意index,您可以使用cumsum

执行此操作
N = 3;
aux = cumsum([0; inVector(:)]);
result = (aux(index+1)-aux(index-N+1))/N;

如果index总是由连续索引组成,则使用conv会更容易(因为移动平均值是带矩形窗口的卷积):

N = 3;
result = conv(inVector,ones(1,N)/N,'valid');