У меня есть это сложное выражение MATLAB, которое я хотел бы упростить, чтобы я мог это понять.Упрощение сложного выражения
g = repmat(log(p), [size(x, 1), 1])
for i = 1:size(mu, 1)
g(:, i) = g(:, i) - sum(log(sigma(i, :)));
g(:, i) = g(:, i) - sum(bsxfun(@rdivide, bsxfun(@minus, x, mu(i, :)).^2, 2*sigma(i, :).^2), 2);
end
p=1x2
sigma=2x2
mu=2x2
x=30x2
В основном эти функции bsxfun
запутать меня много. Я хотел бы выразить это в виде простых петель for
.
Я пытался что-то вроде этого:
[m,n] = size(x)
for i=1:m
for j=1:n
g(i,j)= log(p(j)) - sum(log(sigma(j))) - sum(data(i,j))... ;
end
end
Не совсем уверен, как продолжить с этой точки, в основном ошибки и неправильные результаты!
Путь к сэнсэю, векторизация его 'bsxfun' еще больше! – Adriaan
@Adriaan Эта первая строка предназначена для вас :) – Divakar
Мысль столько. Завтра я освою! – Adriaan