我在这里写了一个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奇怪的是,节目报告,
在cvx_begin (第41行)中的cvxprob (第28行)中,使用cvxprob/newcnstr (第192行)执行纪律的凸编程错误: 无效约束:{凸} == {常数} == (第12行)b= newcnstr( evalin( 'caller',‘cvx_line’,'[]‘),x,y,'==’)中的错误;
在删除约束中的abs()之后,程序可以运行,但这不是我所期望的约束。
发布于 2019-04-25 16:20:19
我认为你可以尝试把矩阵叠加成向量,然后使用L1范数。在CVX中,它只是范数(变量,1)。它将和你在这里写的一样:绝对基本的差异之和。
https://stackoverflow.com/questions/39409116
复制相似问题