I am trying to generate a simple Gaussian pulse that has a 1 ns pulse width. However, when I generate the pulse, I realized that I did not meet the condition that calculates Rayleigh Bandwidth (1/Pulse width).My estimation is based on setting a threshold for the spectrum, which focuses on the higher magnitude values from the 0.65*maximum peak of the spectrum. After I measured the result from the data, I realized that there was approximately a 500MHz difference. Theoretically, bandwidth should be 1GHz, not 1.5GHz. Am I missing the point?

  • 1
    $\begingroup$ that was fast :) $\endgroup$ Sep 20 at 15:50
  • $\begingroup$ @PeterK. I posted an answer to the problem. Thank you for the suggestion :) $\endgroup$ Sep 21 at 20:25
  • $\begingroup$ Excellent! Thank-you. $\endgroup$
    – Peter K.
    Sep 21 at 20:59

1 Answer 1


Finally, I found the reason. The width of the pulse of the signal should be the same at both time and frequency. After entering the scale factor while generating the Gaussian signal, things changed. Now, the width of the signal is same at both time and frequency. Plus, I satisfied the result of the theoretical bandwidth calculation.

Here is the code:

clear all
close all

SpeedofLight=3e8;  %speed of light at vacumm, m/s.  
SamplingFrequency=32e9; % clock frequency, Hz. 
tsampling=1/SamplingFrequency;  % time resolution; 

% Pulse Parameters 
Pulsewidth=1e-9;  % second 
tlocal=-5e-9:tsampling:5e-9; % time vector 
GaussAmplitude=(4*sqrt(pi))/Pulsewidth;  % scaling factor 
GaussPulse=GaussAmplitude.*exp(-4*pi.*(tlocal/Pulsewidth).^2);  % generation of Gaussian signal.  
RadarBandwidth=1/Pulsewidth; % Hz, theoretical bandwidth calculation 
FFTSampleNumber=length(GaussPulse);  % FFT length 
SpectrumGaussPulse= fftshift(fft(GaussPulse,FFTSampleNumber));  % spectrum analysis of pulse 
SpectrumGaussPulse=(SpectrumGaussPulse.*conj(SpectrumGaussPulse))/(FFTSampleNumber*FFTSampleNumber); % power scaling 
fflocal=-SamplingFrequency/2:SamplingFrequency/length(SpectrumGaussPulse):SamplingFrequency/2-SamplingFrequency/length(SpectrumGaussPulse); %frequency vector 
LocationRayleighFrequencyIndex=find(abs(SpectrumGaussPulse)>=abs( 0.65*max(SpectrumGaussPulse)) ); % extraction of values for Rayleigh bandwidth calculation in frequency. 
LocationRayleighFrequency=(LocationRayleighFrequencyIndex); % extraction of values for Rayleigh bandwidth calculation in frequency. 
EstimatedBandwidth=abs(fflocal( LocationRayleighFrequencyIndex(1)))+abs(fflocal(LocationRayleighFrequencyIndex(end))) %estimated Rayleigh bandwdith.  

LocationRayleighTimeIndex=find(abs(GaussPulse)>=abs( 0.65*max(GaussPulse)) ); %  extraction of values for Rayleigh bandwidth calculation in time.  
LocationRayleighTime=tlocal(LocationRayleighTimeIndex);  %  extraction of values for Rayleigh bandwidth calculation in time.  

Errror= length(LocationRayleighTimeIndex)-length((LocationRayleighFrequencyIndex));  % error 

Here is the result:

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.