Main Content

This example demonstrates how to design a Synthetic Aperture Radar (SAR) sensor operating in X-band and calculate its parameters. SAR uses the motion of the radar antenna over a target region to provide image of the target region. Synthetic aperture is created when SAR platform travels over the target region while the pulses are transmitted and received from the radar antenna.

This example focuses on design of a SAR sensor which can meet a set of performance parameters. It outlines the steps to translate performance specifications, such as the azimuth resolution and the probability of detection, into SAR system parameters, such as the antenna dimension and the transmit power. It models design parameters for stripmap and spotlight SAR modes of operation. Relative to the stripmap operation, spotlight mode can provide a better resolution, stronger signal from the scene at the cost of reduced scene size or area imaging rate. The example also models the parameters of the azimuth chirp signal.

The goal of this airborne SAR system is to provide an image of the target region at a distance up to 10 km from the airborne platform with a range and azimuth resolution of 1 m. The platform is operating at an altitude of 5 km and moving with a velocity of 100 m/s. The desired performance indices are probability of detection (Pd) and probability of false alarm (Pfa). These indices must attain a value of 0.9 for Pd and smaller than 1e-6 for Pfa.

slantrngres = 1; % Required slant range resolution (m) azres = 1; % Required azimuth resolution (m) maxrng = 10e3; % Maximum unambiguous slant range (m) pd = 0.9; % Probability of detection pfa = 1e-6; % Probability of false alarm v = 100; % Velocity (m/s) h = 5000; % Radar altitude (m)

We need to define several parameters of the radar system. In this section, system parameters like length of synthetic aperture for stripmap as well as spotlight modes, signal bandwidth which are key parameters that define the operational capability of a SAR system have been derived apart from parameters like beamwidth, integration time and coverage rate.

**Signal Configuration**

To calculate the SAR system parameters, we also need to know the wavelength of the propagating signal, which is related to the operating frequency of the system. Here, we set the operating frequency to 10 GHz considering X-band.

We use the ** freq2wavelen** function to calculate the wavelength of the propagating signal.

freq = 10e9; % Radar Frequency within X-band (Hz) lambda = freq2wavelen(freq) % Wavelength (m)

lambda = 0.0300

The signal bandwidth maps to the slant range resolution of SAR and this in turn is the deciding factor needed to distinguish two targets separated by a distance. Slant range resolution gives you the minimum range difference needed to distinguish two targets. Use the ** rangeres2bw** function to calculate the signal bandwidth which is determined by the slant range resolution.

`pulse_bw = rangeres2bw(slantrngres) % Pulse bandwidth (Hz)`

pulse_bw = 149896229

**Stripmap SAR Mode**

The stripmap SAR mode assumes a fixed pointing direction of the radar antenna relative to the direction of motion of platform. Here, the antenna points to the broadside direction.

**Antenna Orientation**

The depression angle is often used to define the antenna pointing direction in elevation. This example assumes that the earth is sufficiently flat so that the depression angle is the same as the grazing angle.

We use the ** grazingang** function to calculate the grazing angle from the line-of-sight range.

grazang = grazingang(h,maxrng,'Flat') % Grazing angle (in degrees)

grazang = 30.0000

**Antenna Azimuth Dimension**

How do we decide the antenna azimuth dimension? The required azimuth resolution is often a deciding factor for antenna azimuth dimension.

The next step is to use the ** sarlen** and

`sarazres`

dazv = [1 1.5 2 2.5 3]; % Antenna azimuth dimensions (m) striplenv = zeros(1,numel(dazv)); stripazresv = zeros(1,numel(dazv)); for i=1:numel(dazv) striplenv(i) = sarlen(maxrng,lambda,dazv(i)); stripazresv(i) = sarazres(maxrng,lambda,striplenv(i)); end helperPlotStripmapMode(stripazresv,striplenv,dazv,azres)

As can be seen from the figure above, a synthetic aperture length of 149.9 m for the stripmap mode corresponding to 1 m of required azimuth resolution can be a good choice. The smallest antenna dimension in azimuth we can use for stripmap SAR in this scenario is 2 m. However, to achieve image azimuth resolution less than 1 m the antenna dimension in azimuth must be increased for stripmap SAR imaging mode.

For the rest of this example, we select synthetic aperture length of 149.9 m for stripmap mode and antenna azimuth dimension of 2 m.

daz = 2

daz = 2

striplen = 149.9

striplen = 149.9000

**Antenna Elevation Dimension**

What should we use for deciding the antenna elevation dimension? The required swath length to be imaged is often used to define the antenna elevation dimension. We assume swath to be imaged along range is 2.4 km.

The next step is to use the ** aperture2swath** function to analyze and calculate the swath length for selecting an antenna elevation dimension.

rngswath = 2400; delv = [0.15 0.2 0.25 0.3 0.35]; % Elevation Dimensions (m) rangeswathv = zeros(1,numel(delv)); for i=1:numel(delv) [rangeswathv(i),crngswath] = aperture2swath(maxrng,lambda,[delv(i) daz],grazang); end clf plot(rangeswathv,delv) grid on xline(rngswath,'-.',{[num2str(round(rngswath,2)),' m']}); % Selected range swath xlabel('Swath Length (m)') ylabel('Antenna Elevation Dimension (m)')

As can be seen from the figure above, we choose the antenna elevation dimension of 0.25 m for the stripmap mode corresponding to 2400 m of required swath length along range to be imaged.

For the rest of this example, we select antenna elevation dimension of 0.25 m.

del = 0.25

del = 0.2500

**Real Antenna Beamwidth and Gain**

We use the ** ap2beamwidth** function to calculate the real antenna beamwidth.

`realAntBeamwidth = ap2beamwidth([daz del],lambda) % [Az El] (deg)`

`realAntBeamwidth = `*2×1*
0.8588
6.8707

We use the ** aperture2gain** function to calculate the antenna gain.

`antGain = aperture2gain(daz*del, lambda) % dBi`

antGain = 38.4454

**Synthetic Beamwidth, Processing Time, and Constraints**

The section above covered the calculation of antenna dimension, signal bandwidth, and antenna beamwidth of a real aperture radar. The required design parameters mentioned above impose constraints on swath length and area coverage rate.

The next step is to use the ** sarbeamwidth, sarinttime, sarmaxcovrate** and

`sarmaxswath`

stripsynbw = sarbeamwidth(lambda,striplen); % Synthetic beamwidth (degrees) stripinttime = sarinttime(v,striplen); % Integration time (sec) stripcovrate = sarmaxcovrate(azres,grazang); % Upper bound on coverage rate (m^2/sec) stripswlen = sarmaxswath(v,azres,grazang); % Upper bound on swath length (m) RealAntenna = [realAntBeamwidth(1); NaN; NaN; NaN]; Parameters = ["Synthetic Beamwidth";"Integration Time";"Upper Bound on Swath Length";... "Upper Bound on Area Coverage Rate"]; StripmapSAR = [stripsynbw;stripinttime;round(stripcovrate/1e6,1);round(stripswlen/1e3)]; Units = ["degrees";"sec";"km^2/sec";"km"]; sarparams = table(Parameters,RealAntenna,StripmapSAR,Units)

`sarparams=`*4×4 table*
Parameters RealAntenna StripmapSAR Units
___________________________________ ___________ ___________ __________
"Synthetic Beamwidth" 0.85884 0.0057294 "degrees"
"Integration Time" NaN 1.499 "sec"
"Upper Bound on Swath Length" NaN 173.1 "km^2/sec"
"Upper Bound on Area Coverage Rate" NaN 1731 "km"

The azimuth resolution we can achieve using SAR in this scenario is 1 m. However, to achieve this performance, pulses need to be integrated for over 1.5 sec. The upper bound on area coverage rate is 173 km^2/sec. The upper bound on maximum swath length to be imaged is 1731 km.

**Spotlight SAR Mode**

Spotlight SAR is capable of extending the SAR imaging capability to high resolution imaging significantly. This is possible since the spotlight mode ensures that the radar antenna squints instantaneously around the region being imaged thereby illuminating the target region for longer duration as compared to stripmap mode.

**Coherent Integration Angle**

Achieved azimuth resolution in stripmap SAR is 1 m. Resolution of spotlight SAR is often expressed in terms of coherent integration angle of the radar boresight vector as the platform traverses the synthetic aperture length.

We use the ** sarintang** and

`sarlen`

`ciang = sarintang(lambda,azres) % (degrees)`

ciang = 0.8589

len = sarlen(maxrng,'CoherentIntegrationAngle',ciang) % (m)

len = 149.8976

The best azimuth resolution achievable in stripmap SAR is 1 m for antenna dimension of 2 m in azimuth. However, a specification to obtain 0.5 m resolution for spotlight SAR can be achieved using same antenna. This is obtained by steering the radar beam to keep the target within the beam for a longer time and thus form a longer synthetic aperture.

The next step is to use the ** sarlen** and

`sarazres`

spotazres = 0.5; % Azimuth resolution in spotlight SAR (m) intangv = 1:0.01:2.5; % Coherent integration angles (degrees) spotlenv = zeros(1,numel(intangv)); spotazresv = zeros(1,numel(intangv)); for i=1:numel(intangv) spotlenv(i) = sarlen(maxrng,'CoherentIntegrationAngle',intangv(i)); spotazresv(i) = sarazres(maxrng,lambda,spotlenv(i)); end helperPlotSpotlightMode(spotazresv,spotlenv,intangv,spotazres)

As evident from the figure above, we choose the synthetic aperture length of 300 m for the spotlight mode corresponding to 0.5 m of azimuth resolution. For a coherent integration angle of 1.71 degrees, the azimuth resolution in spotlight mode is 0.5 m. However, to achieve similar azimuth resolution in stripmap mode, the antenna dimension in azimuth must be increased.

For the rest of this example, we select synthetic aperture length of 300 m and coherent integration angle of 1.71 degrees for spotlight mode.

spotlen = 300

spotlen = 300

intang = 1.71

intang = 1.7100

**Synthetic Beamwidth, Processing Time, and Constraint**

Relative to the stripmap operation, spotlight mode can provide a better resolution, stronger signal from the scene at the cost of reduced scene size or area imaging rate.

We use ** sarbeamwidth, sarinttime, sarmaxcovrate** and

`sarmaxswath`

spotsynbw = sarbeamwidth(lambda,spotlen); % Synthetic beamwidth (degrees) spotinttime = sarinttime(v,spotlen); % Integration time (sec) spotcovrate = sarmaxcovrate(spotazres,grazang); % Upper bound on coverage rate (m^2/sec) spotswlen = sarmaxswath(v,spotazres,grazang); % Upper bound on swath length (m) SpotlightSAR = [spotsynbw;spotinttime;round(spotcovrate/1e6,1);round(spotswlen/1e3)]; sar = table(Parameters,StripmapSAR,SpotlightSAR,Units)

`sar=`*4×4 table*
Parameters StripmapSAR SpotlightSAR Units
___________________________________ ___________ ____________ __________
"Synthetic Beamwidth" 0.0057294 0.0028628 "degrees"
"Integration Time" 1.499 3 "sec"
"Upper Bound on Swath Length" 173.1 86.5 "km^2/sec"
"Upper Bound on Area Coverage Rate" 1731 865 "km"

In this section, azimuth chirp signal parameters like azimuth chirp rate, Doppler bandwidth, beam compression ratio, azimuth bandwidth after dechirp and azimuth time-bandwidth product have been derived. These are important parameters to design an accurate synthetic aperture processing mechanism in azimuth.

We use the ** sarchirprate** function to calculate azimuth chirp rate at which the azimuth signal changes frequency as the sensor illuminates a scatterer.

`azchirp = sarchirprate(maxrng,lambda,v); % (Hz/sec)`

We analyze the azimuth chirp rate sensitivity to range and Doppler cone angle variations. We observe that increasing the unambiguous range of the radar reduces the azimuth chirp rate.

dcang = 60:1:120; % Doppler cone angles (in degrees) rngv = 1e3:100:maxrng; azchirpv = zeros(length(dcang),length(rngv)); for i = 1:length(dcang) azchirpv(i,:) = sarchirprate(rngv,lambda,v,dcang(i)); end clf mesh(rngv/1e3,dcang,azchirpv) xlabel('Range (km)') ylabel('Doppler Cone Angle (degrees)') zlabel('Azimuth Chirp Rate (Hz/sec)') view([45 45]);

We use the ** sarscenedopbw** function to calculate the scene bandwidth after azimuth dechirp. We assume scene size of 916 m.

```
Wa = 916;
bwdechirp = sarscenedopbw(maxrng,lambda,v,Wa); % (Hz)
```

We analyze the scene bandwidth sensitivity to Doppler cone angle variations.

bwdechirpv = zeros(length(dcang),1); for i = 1:length(dcang) bwdechirpv(i,:) = sarscenedopbw(maxrng,lambda,v,Wa,dcang(i)); end clf plot(dcang,bwdechirpv) grid on xlabel('Doppler Cone Angle (degrees)') ylabel('Azimuth Bandwidth after Dechirp (Hz)')

Next, we use the ** sarpointdopbw **and

` sarbeamcompratio`

**Stripmap SAR**

stripbwchirp = sarpointdopbw(v,azres); % (Hz) striptbwaz = bwdechirp*stripinttime; % Unitless stripbcr = sarbeamcompratio(maxrng,lambda,striplen,Wa); % Unitless

**Spotlight SAR Mode**

spotbwchirp = sarpointdopbw(v,spotazres); % (Hz) spottbwaz = bwdechirp*spotinttime; % Unitless spotbcr = sarbeamcompratio(maxrng,lambda,spotlen,Wa); % Unitless Parameters = ["Doppler Bandwidth from Point Scatterer";"Azimuth Time-Bandwidth Product";... "Beam Compression Ratio";"Azimuth Chirp Rate";"Azimuth Bandwidth after Dechirp"]; StripmapSAR = [stripbwchirp;striptbwaz;stripbcr;round(azchirp);bwdechirp]; SpotlightSAR = [spotbwchirp;round(spottbwaz);round(spotbcr);round(azchirp);bwdechirp]; Units = ["Hz";"unitless";"unitless";"Hz/sec";"Hz"]; r = table(Parameters,StripmapSAR,SpotlightSAR,Units)

`r=`*5×4 table*
Parameters StripmapSAR SpotlightSAR Units
________________________________________ ___________ ____________ __________
"Doppler Bandwidth from Point Scatterer" 100 200 "Hz"
"Azimuth Time-Bandwidth Product" 916.02 1833 "unitless"
"Beam Compression Ratio" 916.02 1833 "unitless"
"Azimuth Chirp Rate" 67 67 "Hz/sec"
"Azimuth Bandwidth after Dechirp" 611.09 611.09 "Hz"

The next section estimates the peak power that must be transmitted using the power form of the radar equation for stripmap SAR. The required peak power is related to many factors including the maximum unambiguous range, the required SNR at the receiver, and the pulse width of the waveform. Among these factors, the required SNR at the receiver is determined by the design goal of Pd and Pfa. We model and estimate the target RCS, the PRF and different sources of gain and loss for the radar system and its environment. We first calculate the SNR required at the receiver.

**Receiver SNR**

The relation between Pd, Pfa and SNR can be best represented by a receiver operating characteristics (ROC) curve.

snr_db = [-inf, 0, 3, 10, 13]; rocsnr(snr_db);

The ROC curves make it clear that to satisfy the design goals of Pfa = 1e-6 and Pd = 0.9, the received signal's SNR must exceed 13 dB. The approach above reads out the SNR value from the curve, but it is often desirable to calculate only the required value. Using Albersheim's equation, the required SNR can be derived as

snr_min = albersheim(pd, pfa)

snr_min = 13.1145

**Target RCS**

We use the ** landreflectivity** function to calculate the reflectivity a.k.a. the normalized radar cross-section (NRCS) for a given grazing angle and operating frequency. The target RCS in the ground image plane is calculated using the

`sarSurfaceRCS`

landType = "Smooth"; nrcs = landreflectivity(landType,grazang,freq); % Calculate normalized RCS of smooth land with no vegetation tgtrcs = sarSurfaceRCS(nrcs,[slantrngres azres],grazang);

**Upper and Lower PRF Bounds**

We use the ** sarprfbounds** function to determine the minimum and maximum PRF values for a range swath and azimuth resolution given the radar velocity and the grazing angle.

[prfminv, prfmax] = sarprfbounds(v,azres,rngswath,grazang)

prfminv = 100

prfmax = 6.7268e+04

**PRF Selection**

The PRF is typically programmable and can be optimized for each mission. We use the ** sarprf** function to calculate the PRF of the radar based on the radar velocity and the real antenna dimension along azimuth. We specify a constant roll-off factor as a safety margin to prevent mainlobe returns from aliasing in the PRF interval. If the PRF is set too low, the radar will suffer from grating lobes and Doppler ambiguities. If the PRF is set too high, range measurements will be ambiguous.

`prf = sarprf(v,daz,'RollOff',1.5)`

prf = 150

The selected PRF is within the PRF bounds.

**Processing Gains**

We use the ** matchinggain** function to calculate the range processing gain due to the noise bandwidth reduction after the matched filter.

d = 0.05; % 5 percent duty cycle pw = (1/prf)*d; % Effective pulse width (sec) rnggain = matchinggain(pw,pulse_bw) % Range processing gain (dB)

rnggain = 46.9867

We use the ** sarazgain** function to calculate the azimuth processing gain due to the coherent integration of pulses.

`azgain = sarazgain(maxrng,lambda,v,azres,prf); % Az processing gain (dB)`

**Losses and Noise Factor**

We use the ** noisefigure** function to estimate the noise figure of the cascaded receiver stages. We assume 7 stages with the following values:

`Stage 1 LNA: Noise Figure = 1.0 dB, Gain = 15.0`

`Stage 2 RF Filter: Noise Figure = 0.5 dB, Gain = -0.5`

`Stage 3 Mixer: Noise Figure = 5.0 dB, Gain = -7.0`

`Stage 4 IF Filter: Noise Figure = 1.0 dB, Gain = -1.0`

`Stage 5 IF Preamplifier: Noise Figure = 0.6 dB, Gain = 15.0`

`Stage 6 IF Stages: Noise Figure = 1.0 dB, Gain = 20.0`

`Stage 7 Phase Detectors: Noise Figure = 6.0 dB, Gain = -5.0`

nf = [1.0, 0.5, 5.0, 1.0, 0.6, 1.0, 6.0]; % dB g = [15.0, -0.5, -7.0, -1.0, 15.0, 20.0, -5.0]; % dB cnf = noisefigure(nf, g)

cnf = 1.5252

We use the ** radarpropfactor** function to calculate the one-way radar propagation factor over smooth land.

[hgtsd, beta0, vegType] = landroughness('Smooth'); tgtheight = hgtsd; Re = effearthradius(maxrng,h,tgtheight); propf = radarpropfactor(maxrng,freq,h,tgtheight,'EffectiveEarthradius',Re,'TiltAngle',grazang,... 'ElevationBeamwidth',realAntBeamwidth(2),'SurfaceHeightStandardDeviation',hgtsd,'SurfaceSlope',beta0,... 'VegetationType',vegType)

propf = -0.0042

We use the ** tropopl** function to calculate losses due to atmospheric gaseous absorption.

atmoLoss = tropopl(maxrng,freq,tgtheight,grazang)

atmoLoss = 0.0733

**Transmit Power**

We use the ** radareqsarpow** function to calculate the peak power with the SAR radar equation. Additional losses and factors including the azimuth beam shape loss, window loss, transmission loss and receive line loss can be specified. We estimate the beam shape loss with the

`beamloss`

imgsnr = snr_min + rnggain + azgain; % (dB) Lb = beamloss; customLoss = 5; % dB sntemp = systemp(cnf); % Noise Temperature Pt = radareqsarpow(maxrng,lambda,imgsnr,pw,rnggain,azgain,'Gain',antGain,'RCS',tgtrcs,... 'AtmosphericLoss',atmoLoss,'Loss',cnf,'PropagationFactor',propf,... 'Ts',sntemp,'CustomFactor',-Lb-customLoss)

Pt = 535.1030

This example demonstrates the aspects that must be calculated to design a X-band SAR system that can operate in stripmap and spotlight mode. The example demonstrates that the same SAR system can operate in stripmap as well as spotlight modes and achieve varying levels of resolution depending upon the requirements at the cost of other parameters. We analyzed and selected antenna dimensions to meet required resolutions. We estimated antenna gains, processing time, constraints, and the azimuth chirp signal parameters. We then estimated required SNR, target RCS, PRF, processing gains and losses in the radar and its environment. Finally, we used the SAR equation to calculate the peak transmit power.

Parameters = ["Antenna Dimension in Azimuth";"Antenna Dimension in Elevation";"Synthetic Aperture Length";... "Azimuth Resolution";"Synthetic Beamwidth";"Integration Time";"Upper Bound on Swath Length";... "Upper Bound on Area Coverage Rate";"Coherent Integration Angle";"Doppler Bandwidth from Point Scatterer";... "Azimuth Time-Bandwidth Product";"Beam Compression Ratio";"Azimuth Chirp Rate";"Azimuth Bandwidth after Dechirp"]; Stripmap = [daz;del;striplen;azres;stripsynbw;stripinttime;round(stripcovrate/1e6,1);round(stripswlen/1e3);... NaN;stripbwchirp;striptbwaz;stripbcr;round(azchirp);bwdechirp]; Spotlight = [daz;del;spotlen;spotazres;spotsynbw;spotinttime;round(spotcovrate/1e6,1);round(spotswlen/1e3);... intang;spotbwchirp;round(spottbwaz);round(spotbcr);round(azchirp);bwdechirp]; Units = ["m";"m";"m";"m";"degrees";"sec";"km^2/sec";"km";"degrees";"Hz";"unitless";... "unitless";"Hz/sec";"Hz"]; T = table(Parameters,Stripmap,Spotlight,Units)

`T=`*14×4 table*
Parameters Stripmap Spotlight Units
________________________________________ _________ _________ __________
"Antenna Dimension in Azimuth" 2 2 "m"
"Antenna Dimension in Elevation" 0.25 0.25 "m"
"Synthetic Aperture Length" 149.9 300 "m"
"Azimuth Resolution" 1 0.5 "m"
"Synthetic Beamwidth" 0.0057294 0.0028628 "degrees"
"Integration Time" 1.499 3 "sec"
"Upper Bound on Swath Length" 173.1 86.5 "km^2/sec"
"Upper Bound on Area Coverage Rate" 1731 865 "km"
"Coherent Integration Angle" NaN 1.71 "degrees"
"Doppler Bandwidth from Point Scatterer" 100 200 "Hz"
"Azimuth Time-Bandwidth Product" 916.02 1833 "unitless"
"Beam Compression Ratio" 916.02 1833 "unitless"
"Azimuth Chirp Rate" 67 67 "Hz/sec"
"Azimuth Bandwidth after Dechirp" 611.09 611.09 "Hz"

[1] Carrara, Walter G., Ronald M. Majewski, and Ron S. Goodman. *Spotlight Synthetic Aperture Radar: Signal Processing Algorithms*. Boston: Artech House, 1995.

**Supporting Functions**

`helperPlotStripmapMode`

function helperPlotStripmapMode(stripazresv,striplenv,dazv,azres) % Plot azimuth resolution vs. synthetic aperture length subplot(1,2,1) plot(stripazresv,striplenv) grid on xline(azres,'-.',{[num2str(round(azres)),' m']}); % Selected azimuth resolution xlabel('Azimuth or Cross-range Resolution (m)') ylabel('Synthetic Length (m)') stripidx = find(abs(striplenv-150)<1); % Index corresponding to required azimuth resolution % Plot synthetic aperture length vs. antenna azimuth dimensions subplot(1,2,2) plot(striplenv,dazv) grid on xline(striplenv(stripidx),'-.',{[num2str(round(striplenv(stripidx),2)),' m']}); % Selected synthetic length xlabel('Synthetic Length (m)') ylabel('Antenna Azimuth Dimension (m)') end

`helperPlotSpotlightMode`

function helperPlotSpotlightMode(spotazresv,spotlenv,intangv,spotazres) % Plot azimuth resolution vs. synthetic aperture length subplot(1,2,1) plot(spotazresv,spotlenv) grid on xline(0.5,'-.',{[num2str(round(spotazres,2)),' m']}); % Selected azimuth resolution xlabel('Azimuth or Cross-range Resolution (m)') ylabel('Synthetic Length (m)') spotidx = find(abs(spotlenv-300)<1); % Index corresponding to 0.5 m azimuth resolution % Plot synthetic aperture length vs. coherent integration angles subplot(1,2,2) plot(spotlenv,intangv) grid on xline(spotlenv(spotidx),'-.',{[num2str(round(spotlenv(spotidx))),' m']}); % Selected synthetic length xlabel('Synthetic Length (m)') ylabel('Coherent Integration Angle (degrees)') end