Найти средние значения в цикле for в распределенном диапазоне - PullRequest
0 голосов
/ 23 мая 2018

У меня есть данные, подобные приведенным ниже:

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), поэтому я хочу найти среднее значение для них и среднее значение соответствующегозначения во 2-м столбце.

Диапазон будет выглядеть как 49:1:100.Код ниже не работает должным образом.

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

1 Ответ

0 голосов
/ 23 мая 2018

Я думаю, что вы ищете логическое индексирование.

Сначала создайте логический массив для значений в диапазоне столбца 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
...