Как вычислить сумму векторов



Я знаю, что этот вопрос задавался много раз, но этот ответ не работает для меня. Я хочу вычислить суммирование следующим образом

эквивация,

Где h(x) = X*theta, theta является nX1 матрицей и X является m xn матрицей. Я попытался написать так:

 f = @(z)(sum(X(z,:)*theta) - y(z))^2;
 v = sum(f([1:m])); % m is length of y

Но это дало мне такую ошибку:

error: for x^A, A must be a square matrix.  Use .^ for elementwise power.
error: called from
    computeCost>@<anonymous> at line 26 column 35
    computeCost at line 27 column 4
    ex1 at line 63 column 3

Мой эквивалент для версии цикла выглядит следующим образом:

v = 0;
for i = 1:m
  v = v + (sum(X(i,:)*theta) - y(i))^2;
end
Пожалуйста, дайте мне знать, как я могу векторизовать этот цикл.
123   1  

1 ответ:

Этот код:

v = 0;
for i = 1:m
  v = v + (sum(X(i,:)*theta) - y(i))^2;
end

Идентичен этому коду:

v = 0;
for i = 1:m
  v = v + (X(i,:)*theta - y(i))^2;
end

(Подсказка: X(i,:)*theta является точечным произведением и возвращает скаляр).

Чтобы векторизовать это, просто суммируйте результат:

v = (X*theta - y).^2;
v = sum(v);

При этом предполагается, что y представляет собой матрицу-столбец (mх1). Примечание. я использовал .^ , как указано в вашем сообщении об ошибке. Это мощность каждого элемента, а не мощность матрицы ^.

    Ничего не найдено.

Добавить ответ:
Отменить.