How do I narrow the frequency from a time domain Gaussian signal?

I'm trying to get a frequency domain Gaussian signal that starts from 180.045 THz and ends in 180.65 THz. This is the matlab code I used to get the FFT of time domain Gaussian signal:

c = 3e+8; % Speed of light [m/sec]
lambda = 1665e-9; % Wavelength [nm]
freq = c/lambda; % Actual Frequency of light [THz]
fsamp = freq*10; % Sampling frequency
fs = 1/fsamp; % Unit time [fs]
Ls = 200; % Length of signal
sig = 8e-15; % Pulse duration
ts = (0:Ls-1)*fs; % Time base
t0 = max(ts)/2; % Used to centering the pulse
Egauss = (exp(-2*log(2)*(ts-t0).^2/(sig)^2)).*cos(-2*pi*freq*(ts-t0));
subplot(2,1,1)
plot(ts/1e-15,real(Egauss),'b');
title(['Gaussian Pulse \sigma=', num2str(sig),'s']);
xlabel('Time (fs)');
ylabel('Amplitude');
ylim([-1 1])
%xlim([30e-15 70e-15])
grid on
NFFT = 2^nextpow2(Ls);
X = fft(Egauss,NFFT)/Ls;
freq = 0.5*fsamp*linspace(0,1,NFFT/2+1); % (full range) Frequency Vector
subplot(2,1,2)
plot(freq/1e+12,2*abs(X(1:NFFT/2+1)))
title('Magnitude of FFT');
xlabel('Frequency (THz)')
ylabel('Magnitude |X(f)|');
xlim([65 300])
grid on


The plot will give me a signal that that is 240 THz wide.

What parameters should I change to get a signal that is 20 GHz wide from the central frequency?

• I am puzzled. It appears you have a NIR laser pulse at 1665 nm (= 180 THz optical frequency, as per your plot) and the pulse is Gaussian, with $\sigma = 8 fs$. Then the FWHM (full width at half maximum height) would be about $2.548 \sigma = 18.8 fs$ and the FWHM in the frequency domain would be about 46.9 THz. But your code has Egauss in a form that looks like it has the frequency domain FWHM in it and also a cosine term. I also don't see how the frequency can narrow unless the time duration increases: the product of the two FWHMs is about 0.883. Hopefully, someone else can help you! – Ed V Jun 15 '19 at 0:48