Здесь я написал 2D-код плавного лассо.
[m n] = size(circle);
cvx_begin
variable theta(m, n);
minimize( norm(circle-theta, 'fro'));
subject to
sum(sum(abs(theta(:,1:n-1)-theta(:,2:n)))) == 0;
sum(sum(abs(theta(1:m-1,:)-theta(2:m,:)))) == 0;
cvx_end
Как ни странно, программный отчет,
В cvxprob (строка 28) В cvx_begin (строка 41) Ошибка при использовании cvxprob/newcnstr (строка 192) Ошибка дисциплинированного выпуклого программирования:
Неверное ограничение: {выпуклое} == {константа}Ошибка в == (строка 12) b = newcnstr( evalin( 'вызывающий', 'cvx_problem', '[]' ), x, y, '==' );
После того, как я удалю abs()
в ограничении, программа сможет работать, но это не то ограничение, которое я ожидаю.