如何在matlab中每8个8200x1数组的值进行平均

时间:2015-04-16 00:17:21

标签: matlab

我有.txt格式的数据,并成功将数据导入到变量V,即8200x1矩阵。现在我需要获得每10个值的平均值。任何人都可以帮我处理代码吗?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找colfilt。您可以将每10个值的平均值设为:[1,...,10]然后[2,...,11]然后[3,...,13]等,如下所示:

a=randi(10,[8200 1]);
b=colfilt(a,[10 1],'sliding',@(x) mean(x))

如果您希望将10个值的不同块平均为:[1,...,10][11,...,20]等,则只需将'sliding'替换为'distinct'

您可以使用blockprocnlfilter执行相同的操作,但colfilt执行得更快,如Mathworks colfilt文档中所述。

答案 1 :(得分:0)

如果你想要大小为10的每个单独的块的平均值:重新整形为10行矩阵,然后平均每列:

n = 10;
result = mean(reshape(V, n, []), 1);

如果你想要长度为10的滑动窗口的平均值:使用卷积:

result = conv(V, ones(1,n)/n, 'valid');