constrainted regularization to solve ill conditioned problems?

조회 수: 7 (최근 30일)
Sebastian Pearson
Sebastian Pearson 2024년 5월 2일
편집: Matt J 2024년 5월 2일
I am trying to solve a matrix equation of the form Ax = b (solving for x with known A and b).
prior to trying regularisation I was using lsqlin (https://uk.mathworks.com/help/optim/ug/lsqlin.html) with the constraints lsqlin(C,d,[],[],[],[],lb,ub) where lb and ub are lower and upper bounds for the allowed values of my output vector. Some (but not all) of my vector values in x should not have negative values. My results are ill-conditioned. I was wondering if anyone is aware of any type of regularisation (e.g. Tikhonov) that has lb or ub constraints such that I can make some (but not all) of my values in x non-negative?
For context:
I have tried using Tikhonov regularisation (the example code given here: https://uk.mathworks.com/matlabcentral/fileexchange/130259-arls-automatically-regularized-least-squares?s_tid=prof_contriblnk - the response from 15 Mar 2024). The issue is that this code does not have any constraints.

채택된 답변

Matt J
Matt J 2024년 5월 2일
편집: Matt J 2024년 5월 2일
To implement Tikhonov regularisation in lsqlin,
C=...
d=...
lb=...
ub=...
beta=0.0001; %regularization weight
I=eye(numel(lb));
C=[C;beta*I];
d(height(C))=0;
x = lsqlin(C,d,[],[],[],[],lb,ub)
  댓글 수: 2
Matt J
Matt J 2024년 5월 2일
This scheme can also be modified to accomodate second order TV regularization,
I=diff(eye(numel(lb)));
Sebastian Pearson
Sebastian Pearson 2024년 5월 2일
Thanks that's super helpful, it looks like it's working! Just to future people looking at this, I think that d should be the vector you had before (without regularisation), with the zeros of height "I" (I=eye(numel(lb));) concatenated on the end.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by