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?
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:
clc 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: