Как решить редкое представление MMV с CVX
Я хочу решить проблему разреженного представления нескольких векторов измерений (MMV) с помощью панели инструментов CVX. У меня N*L матрица X. Матрица X имеет только несколько ненулевых строк. У меня есть система уравнений Y=A*X. Y - M*L матрица измерений (М
min Relax(X) в зависимости от Y = A * X
Realx (.) - это функция, которая применяет норму 1 к вектору t. (N*1) вектор t состоит из нормы 2 каждой строки матрицы X. то есть Relax(X)= norm_1(t) и t(i)=norm_2(X(i,:))
Я не могу преобразовать свою целевую функцию в язык, который CVX может понять и решить. Пожалуйста, скажите мне, как я должен изменить цель задачи и ограничения, чтобы CVX мог ее решить.
2 ответа
'norms' - это команда cvx, которую вы ищете. Предположим, что сигма - это некоторый известный параметр, который позволяет Y быть только приблизительно равным A*X (например, я попробовал это с сигмой =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
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