使用linsolve时出错:Matrix必须是正定的

时间:2018-04-11 12:21:35

标签: c matlab solver equation-solving

我正在尝试将压缩感应用于2D矩阵。我正在尝试运行以下代码 -

Nf=800;

N=401;

E=E(Nf,N);   %matrix of signal(this only for sampling) real matrix E is 2D matrix with size of Nf and N

% compressive sensing
M=ceil(0.3*N);
psi=fft(eye(N)); 
phi=randi(M,N);
EE = permute(E,[2 1]);
theta=phi*psi;
for k=1:Nf
y(:,k)=phi*EE(:,k);
 end

x0 = theta.'*y;
for p=1:Nf
X_hat(:,p) = l1eq_pd(x0(:,p), theta, [], y(:,p), 1e-5); %l1eq_pd=l1-magic
end
X1_hat=psi*X_hat;
XX_hat=permute(X1_hat,[2 1]);

但在运行代码时出现以下错误。

Error using linsolve
Matrix must be positive definite.
Error in l1eq_pd (line 77)
[w, hcond] = linsolve(A*A', b, opts);

Error in simulation_mono_SAR (line 91)

X_hat(:,p) = l1eq_pd(x0(:,p), theta, [], y(:,p), 1e-5);

有人能指出我,问题是什么?这是l1-magic固有的问题吗?我应该使用另一个求解器吗?

0 个答案:

没有答案