我有.txt
格式的数据,并成功将数据导入到变量V,即8200x1矩阵。现在我需要获得每10个值的平均值。任何人都可以帮我处理代码吗?
答案 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'
。
您可以使用blockproc
和nlfilter
执行相同的操作,但colfilt
执行得更快,如Mathworks colfilt
文档中所述。
答案 1 :(得分:0)
如果你想要大小为10的每个单独的块的平均值:重新整形为10行矩阵,然后平均每列:
n = 10;
result = mean(reshape(V, n, []), 1);
如果你想要长度为10的滑动窗口的平均值:使用卷积:
result = conv(V, ones(1,n)/n, 'valid');