%% Ultra short pulse at the input
c=299792458; %light speed
width=100e-15; %pulse width
T = width/(2*(sqrt(log(2)))); %period
lambda0=1550e-9; %carrier frequency
w0=(2*pi*c)/lambda0;
tstep=T/100; % time step (s)
Fs=1/tstep %sampling frequency
t1=-2*T+tstep:tstep:2*T; %axis time
tconv=-2*T:tstep/3.75:2*T+tstep/3.75;%convolution axis time
L=length(t1);
A1=sin(w0*t1).*exp(-2*log(2)*t1.^2/(width/2).^2); % Gaussian intensity modulated sine pulse
A2=sin(w0*tconv).*exp(-2*log(2).*tconv.^2/(width/2).^2);%
y1=exp(-2*log(2)*t1.^2/(width/2).^2); % Gaussian intensity envelope
figure(1)
plot(t1,A1,'r','linewidth',1)
hold on
plot(t1,y1,'b','linewidth',2)
xlabel('t')
ylabel('E(t)')
legend('E(t)','Envelope')
%Spectrum of the gaussian input pulse
n = 10000;
Y=fft(A1,n);
fshift = 1:1/(tstep*n):2.5e14;
lambda=c./fshift;
powershift=(abs(Y(1:3*n/20+2)./L));
figure (2) %Hertzs plot
plot(fshift,powershift);
xlim([0, 2.5e14])
xlabel('frequency(Hz)')
ylabel('Magnitude |X(f)|')
figure(3) %Lambda plot
plot(lambda,powershift);
xlim([1.2e-6, 1.8e-6])
xlabel('lambda(m)')
ylabel('Magnitude |X(f)|')
%Filter's transfer function
K=0.08;
L2=2*pi*5.7172e-06;
ng=4.18;
H12_2=-(sqrt(K^2.*exp(-j*2*pi*L2*ng./lambda))./(1-(1-K).*exp(-j*2*pi*L2*ng./lambda))); %Transfer function
output_frequency_abs=abs(H12_2).*powershift;
output_frequency=H12_2.*Y(1:3*n/20+2);
figure(4)
subplot(1,2,1)
plot(lambda,output_frequency_abs);
xlim([1.2e-6, 1.8e-6])
xlabel('lambda(m)')
ylabel('Magnitude |X(f)|')
% Impulse Response time domain
Impulse_Response_time=(ifft((H12_2),L));
figure (5)
plot(real(Impulse_Response_time));
%Output time domain
output_time=ifft(output_frequency);
figure(6)
plot(real(output_time));
Convolution=conv(A1,Impulse_Response_time,'full');
output_freq_2=fft(Convolution,n);
powershift_2=(abs(output_freq_2(1:3*n/20+2)./L));
figure(4)
subplot(1,2,2)
plot(lambda,powershift_2);
xlim([1.2e-6, 1.8e-6])
xlabel('lambda(m)')
ylabel('Magnitude |X(f)|')
figure(7)
plot(real(Convolution));
