% 20-stage RC Filter % Lecture #19: Full Order Observer V = ones(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; Ae = [-2,1,0,0;1,-2,1,0;0,1,-2,1;0,0,1,-1]; Be = [1;0;0;0]; Ce = [0,0,0,1]; H = [1,2,2,3]'; Xe = zeros(4,1); Ref = 0; n=0; DATA = []; while(t < 10) V0 = 1 + 2*sin(t); dV = A*V + B*V0; 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;V], 'b.-', [0:5:20],[V0;Xe],'m.-',t, -1, 'b+',19.8,Ref,'b+'); ylim([-3,3]); xlim([0,20]); pause(0.01); DATA = [DATA ; V([5,10,15,20])', Xe']; end end t = [1:length(DATA)]' * dt*5; plot(t,DATA)