在for循环中查找分布范围内的平均值

时间:2018-05-23 19:28:22

标签: matlab for-loop matrix mean

我有如下数据:

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

1 个答案:

答案 0 :(得分:2)

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

首先,为第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;

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

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

现在您可以简单地计算此结果的mean

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