Emania

mysoscill

Dec 11th, 2015
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.57 KB | None | 0 0
  1. function [Ar,Br,Cr,Dr] = mysoscill(~,m,k,B)
  2. %
  3. % mysoscill(ver,m,k,B) - dynamic system of mechanical setup
  4. %   for control system design. The system describes dynamics
  5. %   of solid bodies with small oscillations.
  6. %
  7. % Input parameters:
  8. %   ver: scalar    ... system structure descriptor
  9. %   m: [1 x 7]     ... weight of each body of the system
  10. %   k: [1 x 7]     ... spring constants of body links
  11. %   B: [7 x 7]     ... matrix of attenuation coefficients
  12. %
  13. % Output parameters:       
  14. %   Ar,Br,Cr,Dr    ... Matrix of reduced dynamic system description.
  15.  
  16. % memory allocation - basic system
  17. % Ar = eye(4,4);
  18. % Br = [0; 0; 0; 1];
  19. % Cr = [eye(2,2), zeros(2,2)];
  20. % Dr = zeros(2,1);
  21.  
  22.  
  23. k1 = k(1);
  24. k2 = k(2);
  25. k3 = k(3);
  26. k4 = k(4);
  27. k5 = k(5);
  28. k6 = k(6);
  29. k7 = k(7);
  30.  
  31. M = diag(m);
  32.  
  33. K = [k1+k2 -k2 0 0 0 0 0;...
  34.      -k2 k2+k3 -k3 0 0 0 0;...
  35.      0 -k3 k3+k4 -k4 0 0 0;...
  36.      0 0 -k4 k4+k5+k6 -k5 -k6 0;...
  37.      0 0 0 -k5 k5 0 0;...
  38.      0 0 0 -k6 0 k6+k7 -k7;...
  39.      0 0 0 0 0 -k7 k7];
  40.  
  41.  
  42. [V,L] = eig(K, M);
  43.  
  44. Om = diag(L);
  45.  
  46. F = V'*B*V;
  47. f = diag(F);
  48.  
  49. As = [0 Om(1) zeros(1,12);...
  50.       -Om(1) -f(1) zeros(1,12);...
  51.       zeros(1,2) 0 Om(2) zeros(1,10);...
  52.       zeros(1,2) -Om(2) -f(2) zeros(1,10);...
  53.       zeros(1,4) 0 Om(3) zeros(1,8);...
  54.       zeros(1,4) -Om(3) -f(3) zeros(1,8);...
  55.       zeros(1,6) 0 Om(4) zeros(1,6);...
  56.       zeros(1,6) -Om(4) -f(4) zeros(1,6);...
  57.       zeros(1,8) 0 Om(5) zeros(1,4);...
  58.       zeros(1,8) -Om(5) -f(5) zeros(1,4);...
  59.       zeros(1,10) 0 Om(6) zeros(1,2);...
  60.       zeros(1,10) -Om(6) -f(6) zeros(1,2);...
  61.       zeros(1,12) 0 Om(7);...
  62.       zeros(1,12) -Om(7) -f(7)];
  63.  
  64.   Bstmp = [zeros(1,7);...
  65.         V(:,1)';...
  66.         zeros(1,7);...
  67.         V(:,2)';...
  68.         zeros(1,7);...
  69.         V(:,3)';...
  70.         zeros(1,7);...
  71.         V(:,4)';...
  72.         zeros(1,7);...
  73.         V(:,5)';...
  74.         zeros(1,7);...
  75.         V(:,6)';...
  76.         zeros(1,7);...
  77.         V(:,7)'];
  78. %    Bs = Bstmp*[0 0 0 0 1 0 0]';
  79.    
  80.    Cs = [V(1,1)/Om(1) 0;...
  81.          0 V(1,1);...
  82.          V(1,2)/Om(2) 0;...
  83.          0 V(1,2);...
  84.          V(1,3)/Om(3) 0;...
  85.          0 V(1,3);...
  86.          V(1,4)/Om(4) 0;...
  87.          0 V(1,4);...
  88.          V(1,5)/Om(5) 0;...
  89.          0 V(1,5);...
  90.          V(1,6)/Om(6) 0;...
  91.          0 V(1,6);...
  92.          V(1,7)/Om(7) 0;...
  93.          0 V(1,7)]';
  94.      
  95.    Ds = [0;0];
  96.    
  97.    Ar = As(1:4,1:4);
  98.    Br = Bstmp(1:4,:)*[0 0 0 0 1 0 0]';
  99.    Cr = Cs(:,1:4);
  100.  
  101.    I = As(5:end,5:end)\eye(10);
  102.    
  103.    Dr = Ds-Cs(:,5:end)*I*Bstmp(5:end,:)*[0 0 0 0 1 0 0]';
  104.    
  105. end
Advertisement
Add Comment
Please, Sign In to add comment