How do I solve this State Space Equation for a 8 DOF Model for a selected output?

5 次查看(过去 30 天)
This is my model of an 8 DOF vehicle that I am trying to solve for a response, namely X15. I tried the ss(A,B,C,D) function but I don't know how to plot a response from there.
--------------------------------------------------------------------------------- global M_s M_wr1 M_wl1 M_wr2 M_wl2 k_wr1 k_wl1 k_wr2 k_wl2 I_xx I_yy global q r s t x y global k_seat C_seat
q = 1.5, r = q; s = 1, t = s; x = .25, y = x; M_s = 1200; M_seat = 30; M_wr1 = 60, M_wl1 = M_wr1; M_wr2 = 60, M_wl2 = M_wr2; k_wr1 = 30000, k_wl1 = k_wr1; k_wr2 = 30000, k_wl2 = k_wr2; I_xx = 4000; I_yy = 950; k_sr1 = 55000, k_sl2 = k_sr1, k_sr2 = k_sl2, k_sl1 = k_sr2; k_seat = 600; C_sr1 = 1000, C_sl2 = C_sr1, C_sr2 = C_sl2, C_sl1 = C_sr2; C_seat = 100;
A1 = [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ;
A2 = [(-k_sr1 - k_sl1 - k_sr2 - k_sl2 - k_seat), (-C_sr1- C_sl1 - C_sr2 - C_sl2 - C_seat) , (k_sr1.*q + k_sl1.*q + k_sr2.*r -k_sl2.*r + k_seat.*x), (C_sr1.*q + C_sl1.*q - C_sr2.*r - C_sl2.*r + C_seat.*x), (k_sr1.*t - k_sl1.*s+ k_sr2.*t - k_sl2.*s - k_seat.*y), (C_sr1.*t - C_sl1.*s + C_sr2.*t - C_sl2.*s - C_seat.*y), (k_sr1); (C_sr1); (k_sl1); (C_sl1); (k_sr2); (C_sr2); (k_sl2); (C_sl2); (k_seat); (C_seat);] ;
A2 = A2';
A3 = [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0] ;
A4 = [(k_sr1.*q + k_sl1.*q - k_sr2.*r - k_sl2.*r + k_seat.*x), (C_sr1.*q + C_sl1.*q - C_sr2.*r - C_sl2.*r + C_seat.*x), (-k_sr1.*q^2 - k_sl1.*q^2 - k_sr2.*r^2 - k_sl2.*r^2 - k_seat.*x^2), (-C_sr1.*q^2 - C_sl1.*q^2 - C_sr2.*r^2 - C_sl2.*r^2 - C_seat.*x^2) , (-k_sr1.*q.*t + k_sl1.*q.*s + k_sr2.*r.*t - k_sl2.*r.*s + k_seat.*y.*x), (-C_sr1.*q.*t + C_sl1.*q.*s + C_sr2.*r.*t - C_sl2.*r.*s - C_seat.*y.*x), (-k_sr1.*q); (-C_sr1.*q); (-k_sl1.*q); (-C_sl1.*q); (k_sr2.*r); (C_sr2.*r); (k_sl2.*r); (C_sl2.*r); (-k_seat.*x); (-C_seat.*x);];
A4 = A4';
A5 = [0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0];
A6 = [(k_sr1.*t - k_sl1.*s + k_sr2.*t - k_sl2.*s + k_seat.*y), (C_sr1.*t - C_sl1.*s + C_sr2.*t - C_sl2.*s - C_seat.*y), (-k_sr1.*q.*t + k_sl1.*q.*s + k_sr2.*r.*t - k_sl2.*r.*s + k_seat.*x.*y), (-C_sr1.*q.*t + C_sl1.*q.*s + C_sr2.*r.*t - C_sl2.*r.*s + C_seat.*x.*y), (-k_sr1.*t^2 - k_sl1.*s^2 - k_sr2.*t^2 - k_sl2.*s^2 - k_seat.*y^2), (-C_sr1.*t^2 - C_sl1.*s^2 - C_sr2.*t^2 - C_sl2.*s^2 + C_seat.*y^2), (-k_sr1.*t); (-C_sr1.*t); (k_sl1.*s); (C_sl1.*s); (-k_sr2.*t) ; (-C_sr2.*t) ; (k_sl2.*s) ; (C_sl2.*s) ; (k_seat.*y); (C_seat.*y);];
A6 = A6';
A7 = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 ];
A8 = [k_sr1 C_sr1 k_sr1.*q C_sr1.*q k_sr1.*t C_sr1.*t (-k_sr1-k_wr1) C_sr1 0 0 0 0 0 0 0 0];
A9 = [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0];
A10 = [(k_sl1) , (C_sl1) , k_sl1.*(q) , -C_sl1.*(q) , k_sl1.*(s) , C_sl1.*(s), 0 ,0, (- k_sl1-k_wl1), -C_sl1 , 0 ,0 ,0 ,0, 0, 0];
A11 = [0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ];
A12 = [(k_sr2) , (C_sr2), k_sr2.*(r), C_sr2.*(r), -k_sr2.*(t), -C_sr2.*(t), 0 , 0, 0, 0, (- k_sr2-k_wr2), -C_sr2, 0, 0, 0, 0 ];
A13 = [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0];
A14 = [(k_sl2) , (C_sl2), k_sl2.*(r), C_sl2.*(r), k_sl2.*(t), C_sl2.*(t), 0, 0, 0, 0, 0, 0, (- k_sr2-k_wr2), -C_sl2, 0, 0];
A15 = (1/10).*[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1];
A16 = [ k_seat, C_seat, -k_seat.*x , -C_seat.*x, k_seat.*y, C_seat.*y, 0, 0, 0, 0, 0, 0, 0, 0, -k_seat, -C_seat];
A = [A1 ; A2; A3; A4; A5; A6; A7; A8; A9; A10; A11; A12; A13; A14; A15; A16];
B = [0;0;0;0;0;0;0;k_wr1.*(1/M_wr1);0;k_wl1.*(1/M_wl1);0;k_wr2.*(1/M_wr2);0;k_wl2.*(1/M_wl2);0;0];
C = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0];
D = 0;

回答(1 个)

Areej Varamban Kallan
Hi Mohamed,
You can use the 'lsim()' function to obtain the time response of linear systems for arbitrary inputs. The documentation of the 'lsim()' function can be found here.
An example for obtaining the response of state-space models is given here.

类别

Help CenterFile Exchange 中查找有关 Pole and Zero Locations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by