% 20-stage RC Filter % Lecture #21: Observers and Disturbances % Input Disturbance V = zeros(20,1); dV = 0*V; dt = 0.01; t = 0; V0 = 0; A = zeros(20,20); for i=1:19 A(i,i) = -50; A(i,i+1) = 25; A(i+1,i) = 25; end A(20,20) = -25; B = zeros(20,1); B(1) = 25; C = zeros(1,20); C(20) = 1; D = 0; % Full-Order Observer A4 = [-2,1,0,0;1,-2,1,0;0,1,-2,1;0,0,1,-1]; B4 = [1;0;0;0]; C4 = [0,0,0,1]; Ae = [A4, B4 ; zeros(1,5)]; Be = [B4; 0]; Ce = [C4, 0]; H = ppl(Ae', Ce', [-0.5,-0.5,-2,-3,-5])'; Xe = zeros(5,1); % Full-State Feedback Kx = [3, 5, 7, 8]; Kr = 24; n=0; DATA = []; d = 1; while(t < 20) Ref = 1*(sin(0.314*t) > 0); V0 = Kr*Ref - Kx*Xe([1,2,3,4]); dV = A*V + B*(V0 + d); dXe = Ae*Xe + Be*V0 + H*(V(20) - Ce*Xe); V = V + dV * dt; Xe = Xe + dXe * dt; t = t + dt; n = mod(n+1, 5); if(n == 0) plot([0:20], [V0+d;V], 'b.-', [0:5:20],[V0+Xe(5);Xe(1:4)],'m.-',t, -1, 'b+',19.8,Ref,'b+'); ylim([-3,3]); xlim([0,20]); pause(0.01); DATA = [DATA ; V(20), Ce*Xe, Ref]; end end t = [1:length(DATA)]' * dt*5; plot(t,DATA)