如何用CVX解决MMV稀疏表示

问题描述 投票:0回答:2

我想用 CVX 工具箱解决多测量向量(MMV)稀疏表示问题。我有一个 N*L 矩阵 X。矩阵 X 只有几个非零行。我有方程组 Y=A*X。 Y 是 M*L 测量矩阵 (M

分钟放松(X) 服从Y=A*X

Realx(.) 是将范数 1 应用于向量 t 的函数。 (N*1)向量t由矩阵X每行的范数2组成。即Relax(X)=norm_1(t)和t(i)=norm_2(X(i,:))

我无法将我的目标函数转换为 CVX 可以理解和解决的语言。 请告诉我应该如何改变 CVX 可以解决的问题目标和约束。

matlab optimization sparse-matrix cvx
2个回答
0
投票

'norms' 是您正在寻找的 cvx 命令。假设 sigma 是一些已知参数,它允许 Y 仅约等于 A*X(例如,我尝试使用 sigma=10e-6)。然后你可以使用这个代码:

cvx_begin separable

    variable X(n,n)
    minimize( norms(X,2,1) )
    subject to
       norm(Y - A*X,2)<= 10*sigma

cvx_end

0
投票
cvx_begin separable

variable Sp(N,m) complex;% there are m samples
minimize( sum(norms(Sp.',2)) );
subject to
A*Sp==y;
%     norm(y - A*Sp,2)<= 1e-8;

cvx_end
© www.soinside.com 2019 - 2024. All rights reserved.