## FMCW Waveforms

### Benefits of Using FMCW Waveform

Radar systems that use frequency-modulated, continuous-wave (FMCW) waveforms are typically smaller and less expensive to manufacture than pulsed radar systems. FMCW waveforms can estimate the target range effectively, whereas the simplest continuous-wave waveforms cannot.

FMCW waveforms are common in automotive radar systems and ground-penetrating radar systems.

### How to Create FMCW Waveforms

To create an FMCW waveform, use `phased.FMCWWaveform`. You can customize certain characteristics of the waveform, including:

• Sample rate.

• Period and bandwidth of the FM sweep. These quantities can cycle through multiple values during your simulation.

Tip

To find targets up to a given maximum range, `r`, you can typically use a sweep period of approximately `5*range2time(r)` or `6*range2time(r)`. To achieve a range resolution of `delta_r`, use a bandwidth of at least `range2bw(delta_r)`.

• Sweep shape. This shape can be sawtooth (up or down) or triangular.

Tip

For moving targets, you can use a triangular sweep to resolve ambiguity between range and Doppler.

`phased.FMCWWaveform` assumes that all frequency modulations are linear. For triangular sweeps, the slope of the down sweep is the opposite of the slope of the up sweep.

### Double Triangular Sweep

This example shows how to sample an FMCW waveform with a double triangular sweep in which the two sweeps have different slopes. Then, the example plots a spectrogram.

Create an FMCW waveform object for which the `SweepTime` and `SweepBandwidth` properties are vectors of length two. For each period, the waveform alternates between the pairs of corresponding sweep time and bandwidth values.

```st = [1e-3 1.1e-3]; bw = [1e5 9e4]; waveform = phased.FMCWWaveform('SweepTime',st,... 'SweepBandwidth',bw,'SweepDirection','Triangle',... 'SweepInterval','Symmetric','SampleRate',2e5,... 'NumSweeps',4);```

Compute samples from four sweeps (two periods). In a triangular sweep, each period consists of an up sweep and down sweep.

`x = waveform();`

Plot the spectrogram.

```[S,F,T] = spectrogram(x,32,16,32,waveform.SampleRate); image(T,fftshift(F),fftshift(mag2db(abs(S)))) xlabel('Time (sec)') ylabel('Frequency (Hz)')``` 