Solving Systems of Linear Equations
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello:)
I m trying to solve XA=B where both A,B are matrix (instead of B being a vector) Using e.g. LU decomposition ('linsolve' or '/') is possible to obtain such a solution.
However i need to constrain X>0.
Is this an optimization problem (min(||XA-B||),X>0,B), and if it is can someone propose a suitable function ?
Thank you
0 Kommentare
Akzeptierte Antwort
Teja Muppirala
am 26 Apr. 2012
Solving for each row of X is an independent optimization problem that can be solved easily with LSQNONNEG (available from the Optimization Toolbox). Use a loop to solve for each row independently.
Example 1 (test when know the exact answer):
% Set up some data
A = rand(5);
Xtrue = rand(5);
B = Xtrue*A;
% Solve for each row of X using LSQNONNEG
X = [];
for k = 1:size(B,1)
X(k,:) = lsqnonneg(A',B(k,:)');
end
% Verify the result
X - Xtrue
Example 2:
A = rand(6,3);
B = rand(6,3);
X = [];
for k = 1:size(B,1)
X(k,:) = lsqnonneg(A',B(k,:)');
end
% Verify that all X are positive
X
Note that if your data is very big, this algorithm could easily be sped up by running it in parallel.
4 Kommentare
Weitere Antworten (2)
bym
am 25 Apr. 2012
does this answer help? http://www.mathworks.com/matlabcentral/answers/24086-ols-regression-for-multiplr-ys-xs
0 Kommentare
Richard Brown
am 25 Apr. 2012
It very much depends on your matrices. What are the dimensions? Rank?
If A square and full rank then X is uniquely determined as X = BA^{-1}, and either will or will not violate the constraints (there's nothing you can do about it).
0 Kommentare
Siehe auch
Kategorien
Mehr zu Linear Least Squares 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!