% 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 força harmônica
F1=250; % amplitude
om1=150*pi; % frequência circular (angular)
fi1=0.46; % fase

f1=F1*sin(om1*t+fi1); % força harmônica

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

% % passo 2 - equivalência Gsen(wt+fi) e Acoswt+Bsenwt
% 
% A=F1*sin(fi1);
% B=F1*cos(fi1);
% f1a=A*cos(om1*t)+B*sin(om1*t); % força harmônica equivalente
% 
% pause(2)
% figure(2)
% plot(t,f1,'r-')
% grid on
% pause(3)
% hold on
% plot(t,f1a,'b-')
% hold off
% xlabel('t (s)')
% ylabel('f(t) (N)')
% legend('forma Gsen','forma Acos+Bsen')

% % passo 3 - equivalência Gsen(wt+fi) e Gcos(wt+teta)
% 
% teta1=fi1-(pi/2);
% f1b=F1*cos(om1*t+teta1); % força harmônica equivalente
%  
% pause(2)
% figure(3)
% plot(t,f1,'r-')
% grid on
% pause(3)
% hold on
% plot(t,f1b,'g-')
% hold off
% xlabel('t (s)')
% ylabel('f(t) (N)')
% legend('forma Gsen','forma Gcos')

% % passo 4 - soma de componentes harmônicas (periódica?)
% 
% F2=50; % amplitude
% om2=400*pi; % frequência circular
% teta2=1.85; % fase
% 
% f2=F2*cos(om2*t+teta2); % segunda força harmônica
% f=f1+f2; % soma de forças harmônicas
% 
% figure(4);
% plot(t,f1,'r-',t,f2,'b-',t,f,'k-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('f(t) (N)')
% legend('componente 1','componente 2','soma')

% % passo 5 - soma de componentes harmônicas (periódica?) 
% %           (tf = 0.25)
% 
% F2=220; % amplitude
% om2=375; % frequência circular
% teta2=1.85; % fase
% 
% f2=F2*cos(om2*t+teta2); % segunda força harmônica
% f=f1+f2; % soma de forças harmônicas
%  
% figure(5);
% plot(t,f1,'r-',t,f2,'b-',t,f,'k-')
% grid on
% hold on
% plot([ti tf],[0 0],'k-')
% hold off
% xlabel('t (s)')
% ylabel('f(t) (N)')
% legend('componente 1','componente 2','soma')

% % passo 6 - cancelamento de sinal
% %           (modificações de amplitude, frequência e fase)
% %           (tf = 0.12)
% 
% f1c=-F1*sin(om1*t+fi1); % força de cancelamento
% 
% figure(6)
% plot(t,f1,'r-')
% grid on
% pause(3)
% hold on
% plot(t,f1c,'b-')
% pause(3)
% plot(t,f1+f1c,'g-')
% hold off
% xlabel('t (s)')
% ylabel('f(t) (N)')
% legend('força original','força de cancelamento','soma')

% % passo 7 - representação no domínio da frequência
% %           (frequência, amplitude, fase)
% 
% figure(1)
% plot(t,f1,'r-')
% grid on
% xlabel('t (s)')
% ylabel('f(t) (N)')
% title('Representação temporal')
% 
% figure(7)
% subplot(1,2,1)
% stem(om1,F1,'r')
% axis([0 600 0 300])
% grid
% xlabel('\omega (rad/s)')
% ylabel('F (N)')
% 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 8 - funçã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
% vf=faixa(randi([1 numel(faixa)],1,numel(faixa)));
% % frequências, em rad/s
% om3=2*pi*vf;
% % amplitude da função
% F3=1;
% % valores iniciais da função
% t=[];
% f3=[];
% tf=0;
% for k=1:numel(om3)
%   np=100;
%   taux=linspace(0,2*pi/om3(k),np);
%   faux=F3*sin(om3(k)*taux);
%   t=[t taux+tf];
%   f3=[f3 faux];
%   tf=max(t);
% end
% figure(8)
% plot(t,f3,'-r')
% grid on
% xlabel('t(s)')
% ylabel('f(t) (N)')