У меня есть следующие векторы/матрицы:Matlab: Максимизация суммы логарифмов
a --> nx1
b --> nx1
C --> nxn
Учитывая я знаю и C, я хочу, чтобы максимизировать следующее Matlab путем изменения вектора Ь:
S = a(1)*log(sum(b.*C(:,1),1))+...+a(n)*log(sum(b.*C(:,n),1))
Таким образом, каждый элемент суммы S, чтобы быть развернутом образована:
- i-й элемент вектора а, умноженной на (2)
- натуральный логарифм (3)
- суммы элементов, полученных в (4)
- элемент-за-элементом умножения элементов вектора Ь с помощью элементов i-ой колонке матрицы С
ограничения к проблеме является то, что каждый элемент Ь должен быть> = 0 и < = 1, и что они должны подвести к 1.
Я полагаю, я должен был бы использовать функцию fmincon и minimze -S, но не знаю, как настроить функцию S.