matlab 如何用CVX求解MMV稀疏表示

wr98u20j  于 7个月前  发布在  Matlab
关注(0)|答案(2)|浏览(102)

我想用CVX工具箱解决多测量向量(MMV)稀疏表示问题。我有一个NL矩阵X。矩阵X只有几个非零行。我有方程组Y=AX。Y是ML测量矩阵(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可以解决的问题目标和约束条件。

3htmauhk

3htmauhk1#

'norms'是您要查找的cvx命令。假设sigma是某个已知的参数,它允许Y仅近似等于A*X(例如,我试过sigma= 10 e-6)。你可以使用这个代码:

cvx_begin separable

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

cvx_end
tvokkenx

tvokkenx2#

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

相关问题