Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Control observer
- % Input from example 2-5
- sympref('FloatingPointOutput',true)
- clear
- clc
- %% Input:
- A = [-24 1 0; -191 0 1; -504 0 0] % A matrix
- B = [0; 1; 6] % B matrix
- C = [1 0 0] % C matrix
- Ts = 2; % Time settling
- Tp = 0; % Time peak
- Os = 0.2; % Overshoot (100%=1.0)
- zeta = 0; % Zeta
- Wn = 0; % Natural frequency
- speed = 10; % speed to be faster
- %% Process:
- syms s L1 L2 L3 ke;
- if(zeta==0)
- zeta = -(log(Os)/log(exp(1)))/sqrt(pi^2+(log(Os)/log(exp(1)))^2);
- if(Tp==0) Wn = 4/(zeta*Ts);
- else Wn = pi/(Tp*sqrt(1-zeta^2)); end
- end
- pole1 = s+zeta*Wn*speed + (Wn*sqrt(1-zeta^2)*1i)*speed;
- pole2 = s+zeta*Wn*speed - (Wn*sqrt(1-zeta^2)*1i)*speed;
- pole3 = s+zeta*Wn*speed*10;
- Anew = A-[L1; L2; L3]*C
- Ds = expand(pole1*pole2*pole3)
- Ts = det(s*eye(3)-Anew)
- % Solve
- Dsm = coeffs(Ds,s);
- Tsm = coeffs(Ts,s);
- L = vpa(struct2cell((solve(Dsm==Tsm))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement