Как рассчитать среднее значение матрицы на основе значения столбца

У меня матрица B N*4 тусклая. Я хочу рассчитать среднее значение матрицы на основе значений последнего столбца. Последний столбец имеет повторяющиеся значения в диапазоне от 1 до 3. Я хочу вычислить среднее значение для всех строк, последний столбец которых имеет одинаковое значение. Я использую эту команду:

l(it:,)=mean(B(i,:)) 

где it колеблется от 1 до 3 в цикле и i имеет все индексы строк, последний столбец =1. Когда я запускаю этот код, я получаю Sub scripted assignment dimension mismatch error, Кто-нибудь может указать, что не так в команде?

2 ответа

Решение

Рассмотрим следующие примеры данных:

B = [ 0.4000    0.3000    0.2000    1.0000
      0.3000    0.2000    0.1000    2.0000
      0.7000    0.8000    0.6000    1.0000
      0.3000    0.4000    0.8000    2.0000
      0.7000    0.5000    0.5000    3.0000
      0.1000    0.3000    0.9000    3.0000
      0.6000    0.4000    0.5000    1.0000 ];

Два возможных подхода:

  1. Использование логической индексации:

    result = NaN(3,3);
    for k = 1:3
        result(k,:) = mean(B(B(:,4)==k,1:3));
    end
    
  2. С помощью accumarray:

    result = NaN(3,3);
    for k = 1:3
        result(:,k) = accumarray(B(:,4), B(:,k), [], @mean, NaN);
    end
    

С данными примера, любой из вышеперечисленных дает

result =
    0.5667    0.5000    0.4333
    0.3000    0.3000    0.4500
    0.4000    0.4000    0.7000

Ваш вопрос не самый ясный, но я думаю, что знаю, что вы пытаетесь сделать.

Вы говорите, что i содержит индексы строк интереса для каждого значения 1,2,3, поэтому я предполагаю, что вам требуется

 mean_k = mean(mean((B(i,:)))

для каждого k = 1,2,3. Очевидно, вы должны пересчитывать i каждый раз, когда вы итерируете более 1,2,3 при определении соответствующих интересующих строк.

mean Функция при вызове в матрице не возвращает скаляр, она возвращает вектор строки, элементы которой являются средним значением каждого столбца матрицы. Поэтому, чтобы получить среднее значение, нужно позвонить mean опять на результат.

Имейте в виду, что это также включает в себя окончательное значение столбца (которое вы используете для классификации) в ваших общих средних расчетах

Другие вопросы по тегам