【问题标题】:Find mean values in for-loop over distributed range在 for 循环中查找分布范围内的平均值
【发布时间】:2018-11-02 21:35:48
【问题描述】:

我有如下数据:

49.6    46.1
49.65   46.3
50.1    47.03
50.2    47.06
51.35   46.027
51.36   46.20

我想根据第一列的特定范围找到两列的平均值。例如在 [49-50) 的范围内,我应该计算第一列的平均值和第二列中相应值的平均值。在此示例中,带有数字的子数组(仅第一列)

49.6    
49.65   

将在 [49-50) 范围内,因此我想找到它们的平均值以及第二列中相应值的平均值。

范围类似于49:1:100。下面的代码不能正常工作。

for i=49:1:100
    meanWithinRange(i) = mean(data(i,1));
end

【问题讨论】:

  • 你是什么意思“我想找到它们的平均值和第二列对应值的平均值”?您为第二列选择哪个范围?
  • @Goldname 与第一列的范围相同。

标签: matlab for-loop matrix mean


【解决方案1】:

我认为您正在寻找逻辑索引。

首先,为第 1 列的范围内值创建一个逻辑数组:

A=[49.6    46.1
   49.65   46.3
   50.1    47.03
   50.2    47.06
   51.35   46.027
   51.36   46.20];

I = A(:,1)>=49 & A(:,1)<50;

I 是一个逻辑列向量,对于范围内的行,它是 true。您可以使用它来索引您想要的行:

>> A(I,:)
ans =
   49.6000   46.1000
   49.6500   46.3000

所以现在你可以简单地计算这个结果的mean

>> mean(A(I,:))
ans =
   49.6250   46.2000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多