1

我在这里写了一个二维融合套索代码。

[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 行)有纪律的凸编程错误:
无效约束:{convex} == {constant}

== 中的错误(第 12 行) b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '==' );

在我删除abs()约束后,程序可以运行,但这不是我期望的约束。

4

1 回答 1

0

我认为您可以尝试将矩阵堆叠成向量,然后使用 L1 范数。在 CVX 中,它只是 norm(variable, 1)。它的作用与您在此处所写的相同:绝对基本差异的总和。

于 2019-04-25T16:20:19.347 回答