Least Squares with constraint on absolute value
4 次查看(过去 30 天)
显示 更早的评论
Hi , I need to solve a least squares values of the form
, where x is a 32x1 vector and B is a 32x32 matrix.
Howerver, x is complex and I need to constraint the solutions to make each element of vector x to have absolute value of 1.
Is that possible?
Best,
0 个评论
采纳的回答
Torsten
2023-6-16
编辑:Torsten
2023-6-16
rng("default")
n = 32;
y = rand(n,1) + 1i*rand(n,1);
B = rand(n) + 1i*rand(n);
x0 = rand(n,1) + 1i*rand(n,1);
x0 = [real(x0);imag(x0)];
x0 = x0./[sqrt(x0(1:n).^2+x0(n+1:2*n).^2);sqrt(x0(1:n).^2+x0(n+1:2*n).^2)];
fun = @(x)(B*(x(1:n)+1i*x(n+1:2*n))-y)'*(B*(x(1:n)+1i*x(n+1:2*n))-y);
fun(x0)
nonlcon = @(x)deal([],x(1:n).^2+x(n+1:2*n).^2-ones(n,1));
sol = fmincon(fun,x0,[],[],[],[],[],[],nonlcon,optimset('MaxFunEvals',10000,'TolFun',1e-12,'TolX',1e-12))
fun(sol)
sol(1:n).^2+sol(n+1:2*n).^2-ones(n,1)
更多回答(1 个)
Matt J
2023-6-15
编辑:Matt J
2023-6-15
You'll need to write the problem in terms of the real-valued components xi and xr of x,
x=xr+1i*xi
Once you do that, your absolute value constraints become quadratic,
xr^2+xi^2=1
and you can solve with fmincon.
2 个评论
Matt J
2023-6-16
I meant that you should follow the example here,
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Quadratic Programming and Cone Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!