【问题标题】:Is there any command to find mean of first 5 values then next 5 values for a total of 1000 values in a vector in MATLAB是否有任何命令可以找到前 5 个值的平均值,然后是下一个 5 个值,在 MATLAB 中的向量中总共有 1000 个值
【发布时间】:2019-08-26 13:37:54
【问题描述】:

是否有任何命令可以从 MATLAB 中的向量中的总共 25 个值中找到前 5 个值的平均值,然后是接下来的 5 个值。如果数据集是 X。 如果有人可以帮助我提供一个代码,我可以在每 5 个值处获得平均值。

X=[4 5 6 7 2 5 7 4 2 6 7 3 2 1 5 7 8 3 4 6 8 4 2 6 8];

【问题讨论】:

  • 到目前为止你尝试过什么?有很多不同的方法可以完成这项任务。如果您可以向我们提供您的尝试样本,我们或许能够更好地判断您的理解水平并提供适合您的回复。
  • 嗨。请您指导我用最简单的方法解决问题。我尝试了各种代码,但这些代码的答案都不正确。

标签: matlab mean calculated-columns


【解决方案1】:

例如,您可以使用 reshape 重塑数组中的向量,然后应用 mean 函数:

M = mean(reshape(X, [5, numel(X)/5]),1);

或者干脆

M = mean(reshape(X, 5, []),1);

但正如 cmets 中所述,还有许多其他方法。

【讨论】:

  • 您可以在reshape 中使用一个空数组来计算一个输出维度的大小:reshape(X,5,[])
【解决方案2】:

这是一种简单的方法。将向量重新排列为列上的矩阵循环,并取每列中所有值的平均值。将结果存储在新向量中。

X=[4 5 6 7 2 5 7 4 2 6 7 3 2 1 5 7 8 3 4 6 8 4 2 6 8];
Xr = reshape(X,5,5)
cols = size(Xr)(2)
avgs=zeros(1,cols)

for i= 1:cols
    avgs(i) = mean(Xr(:,i))
end

【讨论】:

  • 查看 matlab 文档mathworks.com/help/matlab/ref/mean.html,您可以看到我们可以简化代码并删除 for 循环,并简单地说 avgs = mean(Xr,1)。类似于 Ratbert 提供的响应。
  • 如果你要循环,至少preallocate输出数组。
猜你喜欢
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 2012-12-26
  • 2022-10-09
相关资源
最近更新 更多