Solving Systems of Linear Equations
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Teja Muppirala
el 26 de Abr. de 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 comentarios
Más respuestas (2)
bym
el 25 de Abr. de 2012
does this answer help? http://www.mathworks.com/matlabcentral/answers/24086-ols-regression-for-multiplr-ys-xs
0 comentarios
Richard Brown
el 25 de Abr. de 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 comentarios
Ver también
Categorías
Más información sobre Linear Least Squares en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!