function [fi,Ar,Bo]=defasagem(A,f,ce,cs) % USO: [fi,Ar,Bo]=defasagem(A,f,ce,cs) % % Nome: defasagem % % Versão: v1.0 % % Autores: Geraldo F. Silveira e João B. R. do Val % silveira@dsce.fee.unicamp.br % % Data: 26/05/2001 % % Argumentos: 1o. matriz A: corresponde aa matriz dos resultados obtidos % na experiencia. Formato: Sample, Time, ... % ... [Commanded Pos, Encoder 1 Pos, Encoder 2 Pos, ... % ... Encoder 2 Pos, Control Effort] % Ordem e no. de colunas entre [] podem variar. % % 2o. f: frequencia da senoide do sinal de controle. % 3o. ce: coluna da matriz A que contem o sinal de entrada. % 4o. cs: coluna da matriz A que contem o sinal de saída. % % Finalidade: calculo da defasagem (fi) entre duas ondas senoidais, % da relação de ganhos entre os sinais de saída e de entrada (Ar) % e da amplitude media do sinal de saída (Bo). % % format short g, format compact close all; figure(1); plota(A,ce,cs); figure(2) plot(A(:,1),A(:,cs)); ylabel('encoder position (counts)'); xlabel('amostras'); hold on; grid on; %pega kT e o (k+n)T automaticamente disp('Marque o início do regime diretamente no gráfico...'); [i1,y1]=ginput(1); i1=floor(i1); %%% calcula e retira o valor DC do sinal de entrada t_ini1 = A(i1,2); int_tot_raw = A(end,2) - t_ini1; t_fim1 = A(end,2) - rem(int_tot_raw,(1/f)); % vetor contendo sinal de entrada em um número inteiro de períodos: ind= find((t_ini1<=A(:,2))&(A(:,2) 0, fi=fi-360; end Bo=2*sqrt(saida1^2 + saida2^2); Ar=Bo/Ao; %mostra as defasagens entre o sinal de saida normalizado, o seno %e o cosseno utilizados na integral (soma discreta). figure(4); plot(t,sign(u1)*y_t/Bo,t,sign(u1)*Sen_omega,t,sign(u1)*Cos_omega); grid on; title('Defasagem'); xlabel('tempo'); %%%%%%%%%%%% função plota (primeiro gráfico %%%%%%%%%%%%%%%%%%% function plota(A,ce,cs) figure(1); subplot(2,1,1); plot(A(:,2),A(:,ce)); ylabel('Sinal de Entrada'); xlabel('tempo'); subplot(2,1,2); plot(A(:,2),A(:,cs)); ylabel('Sinal de Saída (counts)'); xlabel('tempo');