Как определить уравнения, содержащие суммирование в MATLAB? - PullRequest
0 голосов
/ 09 ноября 2011

Как определить следующее уравнение в MATLAB?

h(x) = ∑ θ^T*X = θ + θ1*x + θ2*x^2 + ⋯

θ и X - векторы, а T - функция перемещения.

Ответы [ 3 ]

0 голосов
/ 10 ноября 2011

Запись в вопросе не ясна, но выглядит как X_i = x_i ^ {i-1}, i = 1 ... N. Тогда,

h = dot(theta,x.^(0:length(x)-1))
0 голосов
/ 15 ноября 2015

Так что просто используйте

h = sum(X*theta')
0 голосов
/ 09 ноября 2011

Если я не ошибаюсь, я думаю, вы говорите о внутреннем произведении двух векторов:

equation

один использует суммирование по всем элементам (для цикла), другой использует векторную нотацию (транспонированный вектор, умноженный на другой вектор)

Я так говорю, потому что используемые обозначения напоминают мне о линейной регрессии: X входной вектор (с термином смещения X(0) = 1), theta параметры модели (веса), h - гипотеза или вывод

Пример:

theta = rand(5,1);
X = rand(5,1);

для цикла

h = 0;
for i=1:length(X)
    h = h + theta(i)*X(i);
end

матрица-умножение

h = theta'*X;

дот-продукт

h = dot(theta,X);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...