【问题标题】:From a vector to a shorter vector of averages in MatlabMatlab中从一个向量到一个较短的平均值向量
【发布时间】:2015-06-26 10:38:56
【问题描述】:

让我在 Matlab 中有一个大小为 1000 的向量 x。我想生成一个长度为 10 的向量 y,其中每个分量包含来自向量 x 的 100 条记录的平均值。

我的尝试很简单

for i=1:10
 y(i) = mean(x((1:100)+(i-1)*100));
end

我想知道是否有内置命令或更优雅的解决方案。

【问题讨论】:

  • Hmmmm,... Grammar Nitpicker 不禁指出缺少的文章在这里很关键 :-) 。 “每个组件包含 100 条记录的平均值”是预期的含义,但“每个组件包含 一个 平均值......”可以很容易地解释为将输入分成 10记录的长度使得平均记录长度为 100 :-)

标签: matlab vector


【解决方案1】:

您可以使用reshape-函数生成一个二维数组,然后计算正确维度上的平均值。

这可以替代您的循环:

y = mean(reshape(x,[100,10]),1);

注意:x 是列向量还是行向量并不重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多