Solving linear equations with errors only on LHS

2 views (last 30 days)
I have linear equations A*x=b where the matrix elements A(i,j) are corrupted by measurement noise. However, the right hand side, b, is not corrupted. I can imagine why solving with mldivide x=A\b might not be the best idea, but what then is the recommended approach? Do I just solve homogeneously, like in the following?
[~,~,V]=svd([A,-b],0);
z=V(:,end);
x=z(1:end-1)/z(end);

Accepted Answer

Christine Tobler
Christine Tobler on 17 Dec 2015
Edited: Christine Tobler on 18 Dec 2015
Your proposal of computing the total least squares solution of the problem seems good. The scaling of b is important here: if you compute x = A \ (2*b), x is equal to 2*(A \ b). This is not the case with total least squares, because the impact of b on svd([A, -b]) is more complicated. Since total least squares computes
min norm(dA + db, 'fro'), where (A + dA) x = (b + db),
it might make sense to rescale b so that the expected measurement errors in A and in b are of similar size.
  5 Comments
Christine Tobler
Christine Tobler on 21 Dec 2015
OK, then I think the total least squares approach should be good, since there are more columns than rows.
And rescaling the columns of A seems good to; I assume that each column measures something different, or in a different unit?
If you have more information about the measurement in each column, you could try rescaling them in a different way, making the size of the expected error in each column be the same. But this would also get complicated, so rescaling by the l2-norm seems a good choice.

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics and Optimization in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!