Filter löschen
Filter löschen

Solve a system of linear equations

2 Ansichten (letzte 30 Tage)
Chubashini
Chubashini am 28 Feb. 2024
Bearbeitet: John D'Errico am 28 Feb. 2024
Hello,
I would like to solve a system of linear equations for the unknowns xj using a least-squared approximation procedure with a non-negative constraint (using the lsqnonneg function in MATLAB). The linear equation system is represented as S=YA, where S is a 30-element vector containing all the si values, Y is a 30×n matrix containing all the yj,i values, and A is an n-element vector containing the unknowns xj. While I can solve each equation for individual sample using the lsnonneg function in MATLAB, I am seeking guidance on how to solve the equations for many samples simultaneously..
Thanks,

Antworten (1)

John D'Errico
John D'Errico am 28 Feb. 2024
Bearbeitet: John D'Errico am 28 Feb. 2024
I am confused. You say that you know how to solve the problem using lsqnonneg. So just use it!
n = 30;
Y = rand(30,n);
S = rand(30,1);
See, that if I just use backslash here, it will produce a result that is not bounded to be nonnegative.
xslash = Y\S
xslash = 30×1
0.3452 -0.8259 -2.7427 -0.2307 -2.4206 -0.3200 -1.8315 -1.9436 -1.1118 4.4774
As such, you use lsqnonneg. And you do not use lsqnonneg one equation at a time. It applies to the entire system.
x = lsqnonneg(Y,S)
x = 30×1
0.0204 0.0166 0.4094 0 0 0 0 0.1144 0 0

Kategorien

Mehr zu Linear Algebra finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by