From: Nils on 2 May 2010 14:11 Hello, I have estimated a disturbance model as well as a noise model acting on my output. I have a model of the type x´=A*x+B*u+K*v1 y = C*x+D*u+v2 where v1 = [w; v2] - a vector with white noise. Now I want to convert this to discrete time... and I'm trying to utilize the idmodel functionality. I have only one output and so when I try this MATLAB tells me that C needs to have the same number of rows as K has columns. Why? I guess I could shrink the K matrix to one column but that would assume the same noise driving the disturbance as the measurement noise, right? Does anyone know how to get around this? A hint on how to convert the system above to discrete time without the use of idmodel would of course be appreciated as well! Thanks!
From: Nils on 3 May 2010 03:00 So, according to the documentation the system identification toolbox supports only one source of white noise: the same vector is acting on the output as the dynamic state equation. But then, how do I incorporate the 'cross-spectral intensity' in the Kalman filter design?
From: Nils on 3 May 2010 08:04 Ok, I'll take a last shot at explaining my situation. I have a model for my dynamical system: x_a´= A_a*x_a +B_a*u +N_a*w z = C_a*x_a + D_a*u (where w is the estimated colored disturbance) Modeling the colored disturbance as: x_w´= A_w*x_w + B_w*v_w w = C_w*x_w+D_w*v_w (v_w is white noise) Modeling the colored measurement noise as: x_n´= A_n*x_n + B_n*v_n n = C_n*x_n + D_n*v_n (v_n is white noise) Putting this all together we get x´= Ax+Bu+Nv y=Cx+Du+D_n*v_n where x = [x_a; x_w; x_n] v = [v_w; v_n] and among other matrices N = blkdiag([N_a*D_w; B_w],B_n) This means that N should always at least have 2 columns, regardless of how many columns C has. I don't know what I'm doing wrong here, or if it is MATLAB that doesn't support two noise inputs.
From: Nils on 4 May 2010 18:03 If anyone's interested... MATLAB seems to lack support for this in the idmodel. 'Workaround': Making the short-sampling time approximation, the transformation of K (or N) is identical to that of B. So define a new temporary system with idss_temp.a = A; idss_temp.b = N .... then make the usual conversion with c2d or by yourself. Then convert the usual system idss with A,B,C and D with c2d or similar. In the discrete domain then assign idss_d.K = Nd.
|
Pages: 1 Prev: How to measure the amount of BLUR in a video? Next: how to find the height of a signature |