% Manipulação de funções harmônicas

clc;
clearvars;
close all;

ti=0; % tempo inicial
tf=0.12; % tempo final(0.12, 0.25)
t=linspace(ti,tf,1000); % vetor de tempo

% características de vibração (deslocamento) harmônica
X1=250; % amplitude
om1=150*pi; % frequência circular (angular)
fi1=0.46; % fase

x1=X1*sin(om1*t+fi1); % vibração harmônica

% % passo 1 - representação no domínio do tempo
% %           (amplitude, período, frequência, fase)
% 
% figure(1)
% plot(t,x1,'r-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')

% % passo 2 - equivalência Gsen(wt+fi) e Acoswt+Bsenwt
% 
% A=X1*sin(fi1);
% B=X1*cos(fi1);
% x1a=A*cos(om1*t)+B*sin(om1*t); % vibração harmônica equivalente
% 
% pause(2)
% figure(2)
% plot(t,x1,'r-')
% grid on
% pause(3)
% hold on
% plot(t,x1a,'b-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% legend('forma Gsen','forma Acos+Bsen')

% % passo 3 - equivalência Gsen(wt+fi) e Gcos(wt+teta)
% 
% teta1=fi1-(pi/2);
% x1b=X1*cos(om1*t+teta1); % vibração harmônica equivalente
%  
% pause(2)
% figure(3)
% plot(t,x1,'r-')
% grid on
% pause(3)
% hold on
% plot(t,x1b,'g-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% legend('forma Gsen','forma Gcos')

% % passo 4 - soma de componentes harmônicas (periódica?)
% 
% X2=50; % amplitude
% om2=400*pi; % frequência circular
% teta2=1.85; % fase
% 
% x2=X2*cos(om2*t+teta2); % segunda vibração harmônica
% x=x1+x2; % soma de vibrações harmônicas
% 
% figure(4);
% plot(t,x1,'r-',t,x2,'b-',t,x,'k-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% legend('componente 1','componente 2','soma')

% % passo 5 - soma de componentes harmônicas (periódica?) 
% %           ( ---> tf = 0.25 (linha 8) )
% 
% X2=220; % amplitude
% om2=375; % frequência circular
% teta2=1.85; % fase
% 
% x2=X2*cos(om2*t+teta2); % segunda vibração harmônica
% x=x1+x2; % soma de vibrações harmônicas
%  
% figure(5);
% plot(t,x1,'r-',t,x2,'b-',t,x,'k-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% legend('componente 1','componente 2','soma')

% % passo 6 - deslocamento, velocidade e aceleração
% %           ( ---> tf = 0.12 (linha 8) )
% 
% x1=X1*sin(om1*t+fi1); % deslocamento harmônico
% v1=om1*X1*cos(om1*t+fi1); % velocidade harmônica correspondente
% a1=-om1^2*X1*sin(om1*t+fi1); % aceleração harmônica correspondente
% 
% figure(6);
% subplot(3,1,1)
% plot(t,x1,'r-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% subplot(3,1,2)
% plot(t,v1/1000,'g-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('v(t) (mm/s)')
% subplot(3,1,3)
% plot(t,a1/1e6,'b-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('a(t) (m/s^2)')

% % passo 7 - cancelamento de sinal
% %           (modificações de amplitude, frequência e fase)
% 
% x1c=-X1*sin(om1*t+fi1); % força de cancelamento
% 
% figure(7)
% plot(t,x1,'r-')
% grid on
% pause(3)
% hold on
% plot(t,x1c,'b-')
% pause(3)
% plot(t,x1+x1c,'g-')
% hold off
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% legend('vibração original','vibração de cancelamento','soma')

% % passo 8 - representação no domínio da frequência
% %           (frequência, amplitude, fase)
% 
% figure(1)
% plot(t,x1,'r-')
% grid on
% xlabel('t (s)')
% ylabel('x(t) (\mum)')
% title('Representação temporal')
% pause(3)
% 
% figure(8)
% subplot(1,2,1)
% stem(om1,X1,'r')
% axis([0 600 0 300])
% grid
% xlabel('\omega (rad/s)')
% ylabel('X (\mum)')
% title('Espectro de amplitude')
% subplot(1,2,2)
% stem(om1,fi1,'r')
% axis([0 600 0 pi])
% grid
% xlabel('\omega (rad/s)')
% ylabel('\phi (rad)')
% title('Espectro de fase')

% % passo 9 - vibração "harmônica" com frequência aleatória
% 
% % geração de faixa de frequências de 40 a 80 Hz
% faixa=40:5:80;
% % seleção aleatória uniforme de valores de frequências, em Hz
%   % índices selecionados
% iv=randi([1 numel(faixa)],1,numel(faixa));
%   % frequências correspondentes
% vf=faixa(iv);
% % valores de frequências selecionadas, em rad/s
% om3=2*pi*vf;
% % amplitude da função
% X3=1;
% % valores iniciais da função
% t=[];
% x3=[];
% tf=0;
% for k=1:numel(om3)
%   np=100;
%   taux=linspace(0,2*pi/om3(k),np);
%   xaux=X3*sin(om3(k)*taux);
%   t=[t taux+tf];
%   x3=[x3 xaux];
%   tf=max(t);
% end
% figure(8)
% plot(t,x3,'-r')
% grid on
% xlabel('t(s)')
% ylabel('x(t) (\mum)')