2015-02-15 2 views
0

Глядя на какой-то MATLAB коды, связанную с многомерным гауссово распределением, и я наткнулся на эту строку:MATLAB: среднее (X (Y == y, :));

params.means(k, :) = mean(X(Y == y, :)); 

Глядя на документации MATLAB http://www.mathworks.com/help/matlab/ref/mean.html, мое предположение, что он вычисляет среднее по матрице X в первом измерении (колонка). То, что я не вижу, это круглые скобки, которые появляются после. Является ли это условной вероятностью (где Y = y)? Может ли кто-нибудь указать мне на документацию, где это объясняется?

+2

Y == y возвращает матрицу того же размера, что и Y или y (в зависимости от того, какой из них является скаляром). записи равны 1, если эта запись равна скаляру y и 0 в противном случае. – thang

+0

Спасибо за ответ. Как это связано с комбинацией с X. Поскольку фактическая возвращаемая матрица состоит не только из 1 и 0. – Abundance

ответ

2

Распакованные, это одна строка может выглядеть следующим образом:

row_indices = find(Y==y); 
new_X = X(row_indices,:); 
params.means(k,:) = mean(new_X); 

Итак, как вы можете видеть, Y==y просто используется, чтобы найти подмножество X, над которой берется среднее значение.

Учитывая, что вы сказали, что это было для вычисления многомерных гауссовских распределений, я уверен, что X и Y являются парными наборами данных. Бьюсь об заклад, что код является циклическим (с использованием переменной k) по разным значениям y. Таким образом, он находит все Y равным y, а затем вычисляет среднее значение X, которое соответствует значениям Y.

+0

И вы бы выиграли ставку! : D Спасибо тонну, ваше объяснение и образец кода поражают его прямо на голове. – Abundance