Solving Systems of Linear Equations

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

 채택된 답변

Teja Muppirala
Teja Muppirala 2012년 4월 26일

0 개 추천

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

Richard Brown
Richard Brown 2012년 4월 26일
Only use lsqnonneg if the norm in question is the Euclidean norm. If it's the infinity or one-norm then pose it as a linear program and use linprog.
Teja Muppirala
Teja Muppirala 2012년 4월 26일
(I was lazy, but in general you'd probably want to preallocate X here since you do know its size)
Teja Muppirala
Teja Muppirala 2012년 4월 26일
Good point, Richard
GEO GEP
GEO GEP 2012년 4월 26일
If A=3x3, B=3x3 (and X=3x3), then as Richard said X = BA^{-1}, and either will or will not violate the constraints (there's nothing I can do about it).
However my system can have an arbitrary number of columns where A=3x(3*n), B=3x(3*n), n E R (and X=3x3). If i understand correctly both problems can be tackled with multiple lsqnonneg (or linprog)...
Can this problem be (also) solved by a non negative matrix factorization nnmf (B=W*H, enforcing somehow H=A)
Thank you -so much- for your answers

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

추가 답변 (2개)

Richard Brown
Richard Brown 2012년 4월 25일

0 개 추천

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).

카테고리

Community Treasure Hunt

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

Start Hunting!

Translated by