Solving linear equations with errors only on LHS
2 views (last 30 days)
Show older comments
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);
0 Comments
Accepted Answer
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
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.
More Answers (0)
See Also
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!