Azzera filtri
Azzera filtri

constrainted regularization to solve ill conditioned problems?

11 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Matt J
Matt J il 2 Mag 2024
Modificato: Matt J il 2 Mag 2024
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 Commenti
Matt J
Matt J il 2 Mag 2024
This scheme can also be modified to accomodate second order TV regularization,
I=diff(eye(numel(lb)));
Sebastian Pearson
Sebastian Pearson il 2 Mag 2024
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.

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by