- #1

divB

- 87

- 0

It is a well known fact that in an inverse linear problem low condition numbers have low noise amplification and therefore decrease the error.

So I wanted to test this: I draw random (skinny) matrices A, calculate y=A*c where c is a known coefficient vector, add some noise and calculate c from Least Squares. I would expect at least a small correlation between the MSE for c and the condition number.

But this is what it looks:

Yes, is it arbitrary, uncorrelated, this does not make sense at all! For example, a (relatively) low condition number of 1.5 can produce everything from the best (-79dB) down to the worst (-56dB). Changing the parameters does not change anything

Can anyone tell me what I am doing wrong or which (wrong?) assumptions I make?

Thanks

PS: Here is the MATLAB code

Code:

```
K = 5;
M = 50;
numtrials = 1000;
c = randn(K,1);
for trial=1:numtrials
A = randn(M,K);
y = A*c;
y = add_noise(y, 55); % add 55dB noise via randn(...)
c_rec = A \ y; %c_rec = pinv(A)*y;
NMSE_c = 20*log10(norm(c - c_rec)/norm(c));
plot(cond(A), NMSE_c, 'bo');
hold on;
xlabel('Condition number');
ylabel('NMSE of coefficients');
drawnow;
end
```