close all clear all %%%%%%%%%%%%%%%%%%%%%%%%%%% % dados de simula??o % \dot{x}(t) = -ax(t)+bu(t) % x = (b/(s+a))u %%%%%%%%%%%%%%%%%%%%%%%%%%% a = 5; b = 3; num = b; den = [1 a]; ftx = tf(num,den); ftx1 = tf([1 0],[1 2 1]); ftx2 = tf(1,[1 2 1]); N = 295; dt = 0.01; alpha = 0.5; T = 0:dt:N; u = 1*ones(1,N/dt+1); u = sin(T); [Y,T] = lsim(ftx,u,T); Y1 = lsim(ftx1,Y,T); Y2 = lsim(ftx2,Y,T); Y3 = lsim(ftx2,u,T); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % algoritmo de identifica??o de par?metros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Y(1) = 0; Erro(1) = 0; teta(:,1) = [0;0]; gamma = 100*[1 0 ;0 1]; for k = 1:N/dt phi1(:,k) = [-Y2(k);Y3(k)]; ms = 1+alpha*phi1(:,k)'*phi1(:,k); teta(:,k+1) = teta(:,k) + gamma*dt*((Y1(k)-teta(:,k)'*phi1(:,k))/ms)*phi1(:,k); erro(k+1) = Y1(k)-teta(:,k)'*phi1(:,k); end figure(1) plot(T,teta,'LineWidth',4) hold on plot(T,erro,'LineWidth',4) legend('Parametro a','Parametro b','Erro') xlabel('Amostras') ylabel('Parametro Identificado') title('Metodo do Gradiente') ax = gca; ax.FontSize = 24; hold off %saveas(1,'ex2_agosto_2020_ab')