Prev: Simulink duplicate data logging
Next: How to copy and add a matrix for a large number of times?
From: drgz on 6 Jul 2010 09:34 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 26 Jul 2010 09:04 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.
First
|
Prev
|
Pages: 1 2 Prev: Simulink duplicate data logging Next: How to copy and add a matrix for a large number of times? |