From: drgz on
Just to avoid any misunderstanding reg. my previous post;
I'm modeling a nonlinear system with a linear-in-parameter model, hence, I try to solve y = H*w :)
From: drgz on
Been trying some of the techniques discussed in the order post; but I'm not sure if I'm on the right track.

I.e. the technique by multiplying the data matrix, H, with a diagonal matrix D where the diagonal elements are the maximum abs. values of the data matrix.

If I've understood this correct, I compute;

[m,n] = size(H);
D = zeros(m);
for j = 1:m
D(m,m) = max(abs(H(m,:)));
end

DH = D*H; % (m-by-m *m-by-n = m-by-n)
Dy = D*y; % (m-by-m * m-by-1 = m-by-1)
w_hat = DH\Dy; % or w = pinv(DH)*Dy; (m-by-n \ m-by-1 = n-by-1)
y_hat = DH*w_hat; % (m-by-n * n-by-1 = m-by-1)

At the moment I haven't tried this with my complete x and y-vectors, as the D matrix would be approximately 16k-by-16k, consuming more than 2GB ram. However, when trying with just a part of the x and y vectors (~length i.e. 1000), the condition number of DH is greater than H originally, and when solving the linear system I end up with a greater error than without using this technique (~MSE = ~ 60dB with this technique, Vs. MSE = -55 dB originally). If I switch to

y_hat = X*w_hat;

using the same w_hat as derived above, the MSE is about -33 dB, still far worse than without using this method, hence I assume I do something wrong (if so, what?).

As for trying other methods, will it be the same solving

[Q R] = mgs_qr(H); % Modified Gram-Schmidt QR-decomposition (using MATLABs built in QR function takes ages with my full matrix, any tips of speeding up this?)
w_hat = Q\y;
y_hat = Q*y;

?

Doing this, I get a MSE of ~-55 dB as I originally did without applying any methods at all, however, the Q matrix now got a condition number equal to one, which should be good. But the question then is, should have I managed to get any better results, i.e. lower MSE, by doing this or?

And maybe someone could recommend a good book(s) which cover the topic so I can do some reading myself.