# chirp

Swept-frequency cosine

## Syntax

## Description

## Examples

### Linear Chirp

Generate a chirp with linear instantaneous frequency deviation. The chirp is sampled at 1 kHz for 2 seconds. The instantaneous frequency is 0 at *t* = 0 and crosses 250 Hz at *t* = 1 second.

t = 0:1/1e3:2; y = chirp(t,0,1,250);

Compute and plot the spectrogram of the chirp. Divide the signal into segments such that the time resolution is 0.1 second. Specify 99% of overlap between adjoining segments and a spectral leakage of 0.85.

pspectrum(y,1e3,"spectrogram",TimeResolution=0.1, ... OverlapPercent=99,Leakage=0.85)

### Quadratic Chirp

Generate a chirp with quadratic instantaneous frequency deviation. The chirp is sampled at 1 kHz for 2 seconds. The instantaneous frequency is 100 Hz at *t* = 0 and crosses 200 Hz at *t* = 1 second.

```
t = 0:1/1e3:2;
y = chirp(t,100,1,200,"quadratic");
```

Compute and plot the spectrogram of the chirp. Divide the signal into segments such that the time resolution is 0.1 second. Specify 99% of overlap between adjoining segments and a spectral leakage of 0.85.

pspectrum(y,1e3,"spectrogram",TimeResolution=0.1, ... OverlapPercent=99,Leakage=0.85)

### Convex Quadratic Chirp

Generate a convex quadratic chirp sampled at 1 kHz for 2 seconds. The instantaneous frequency is 400 Hz at *t* = 0 and crosses 300 Hz at *t* = 1 second.

t = 0:1/1e3:2; fo = 400; f1 = 300; y = chirp(t,fo,1,f1,"quadratic",[],"convex");

Compute and plot the spectrogram of the chirp. Divide the signal into segments such that the time resolution is 0.1 second. Specify 99% of overlap between adjoining segments and a spectral leakage of 0.85.

pspectrum(y,1e3,"spectrogram",TimeResolution=0.1, ... OverlapPercent=99,Leakage=0.85)

### Symmetric Concave Quadratic Chirp

Generate a concave quadratic chirp sampled at 1 kHz for 4 seconds. Specify the time vector so that the instantaneous frequency is symmetric about the halfway point of the sampling interval, with a minimum frequency of 100 Hz and a maximum frequency of 500 Hz.

t = -2:1/1e3:2; fo = 100; t1 = max(t); f1 = 500; y = chirp(t,fo,t1,f1,"quadratic",[],"concave");

pspectrum(y,t,"spectrogram",TimeResolution=0.1, ... OverlapPercent=99,Leakage=0.85)

### Logarithmic Chirp

Generate a logarithmic chirp sampled at 1 kHz for 10 seconds. The instantaneous frequency is 10 Hz initially and 400 Hz at the end.

```
t = 0:1/1e3:10;
fo = 10;
f1 = 400;
y = chirp(t,fo,10,f1,"logarithmic");
```

Compute and plot the spectrogram of the chirp. Divide the signal into segments such that the time resolution is 0.2 second. Specify 99% of overlap between adjoining segments and a spectral leakage of 0.85.

pspectrum(y,t,"spectrogram",TimeResolution=0.2, ... OverlapPercent=99,Leakage=0.85)

Use a logarithmic scale for the frequency axis. The spectrogram becomes a line, with high uncertainty at low frequencies.

```
ax = gca;
ax.YScale = "log";
```

### Complex Chirp

Generate a complex linear chirp sampled at 1 kHz for 10 seconds using single support precision. The instantaneous frequency is –200 Hz initially and 300 Hz at the end. The initial phase is zero.

fs = 1e3; t = single(0:1/fs:10); fo = -200; f1 = 300; ph0 = 0; y = chirp(t,fo,t(end),f1,"linear",ph0,"complex");

Compute and plot the spectrogram of the chirp. Divide the signal into segments such that the time resolution is 0.2 second. Specify 99% of overlap between adjoining segments and a spectral leakage of 0.85.

pspectrum(y,t,"spectrogram",TimeResolution=0.2, ... OverlapPercent=99,Leakage=0.85)

Verify that a complex chirp has real and imaginary parts that are equal but with ${90}^{\circ}$ phase difference.

x = chirp(t,fo,t(end),f1,"linear",0)... + 1j*chirp(t,fo,t(end),f1,"linear",-90); pspectrum(x,t,"spectrogram",TimeResolution=0.2, ... OverlapPercent=99,Leakage=0.85)

## Input Arguments

`t`

— Time array

vector | matrix | *N*-D array

Time array, specified as a vector, matrix, or *N*-D
array.

If you specify `t`

using single-precision data, the
`chirp`

function generates a single-precision
signal `y`

.

**Data Types: **`single`

| `double`

`f0`

— Instantaneous frequency at time 0

`0`

(default) | real scalar in Hz

Initial instantaneous frequency at time 0, specified as a real scalar expressed in Hz.

**Data Types: **`single`

| `double`

`t1`

— Reference time

`1`

(default) | positive scalar in seconds

Reference time, specified as a positive scalar expressed in seconds.

**Data Types: **`single`

| `double`

`f1`

— Instantaneous frequency at time `t1`

`100`

(default) | real scalar in Hz

Instantaneous frequency at time `t1`

, specified as a
real scalar expressed in Hz.

**Data Types: **`single`

| `double`

`method`

— Sweep method

`"linear"`

(default) | `"quadratic"`

| `"logarithmic"`

Sweep method, specified as `"linear"`

,
`"quadratic"`

, or `"logarithmic"`

.

`"linear"`

— Specifies an instantaneous frequency sweep*f*(_{i}*t*) given by$${f}_{i}(t)={f}_{0}+\beta t,$$

where

$$\beta =({f}_{1}-{f}_{0})/{t}_{1}$$

and the default value for

*f*_{0}is 0. The coefficient*β*ensures that the desired frequency breakpoint*f*_{1}at time*t*_{1}is maintained.`"quadratic"`

— Specifies an instantaneous frequency sweep*f*(_{i}*t*) given by$${f}_{i}(t)={f}_{0}+\beta {t}^{2},$$

where

$$\beta =({f}_{1}-{f}_{0})/{t}_{1}{}^{2}$$

and the default value for

*f*_{0}is 0. If*f*_{0}>*f*_{1}(downsweep), the default shape is convex. If*f*_{0 }<*f*_{1}(upsweep), the default shape is concave.`"logarithmic"`

— Specifies an instantaneous frequency sweep*f*(_{i}*t*) given by$${f}_{i}(t)={f}_{0}\times {\beta}^{t},$$

where

$$\beta ={\left(\frac{{f}_{1}}{{f}_{0}}\right)}^{\frac{1}{{t}_{1}}}$$

and the default value for

*f*_{0}is 10^{–6}.

**Data Types: **`char`

| `string`

`phi`

— Initial phase

`0`

(default) | positive scalar in degrees

Initial phase, specified as a positive scalar expressed in degrees.

**Data Types: **`single`

| `double`

`shape`

— Spectrogram shape of quadratic chirp

`"convex"`

| `"concave"`

Spectrogram shape of quadratic chirp, specified as
`"convex"`

or `"concave"`

.
`shape`

describes the shape of the parabola with
respect to the positive frequency axis. If not specified,
`shape`

is `"convex"`

for the
downsweep case with *f*_{0} >
*f*_{1}, and
`"concave"`

for the upsweep case with
*f*_{0} <
*f*_{1}.

**Data Types: **`char`

| `string`

`cplx`

— Output complexity

`"real"`

(default) | `"complex"`

Output complexity, specified as `"real"`

or
`"complex"`

.

**Data Types: **`char`

| `string`

## Output Arguments

`y`

— Swept-frequency cosine signal

vector

Swept-frequency cosine signal, returned as a vector.

## Extended Capabilities

### C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

### Thread-Based Environment

Run code in the background using MATLAB® `backgroundPool`

or accelerate code with Parallel Computing Toolbox™ `ThreadPool`

.

This function fully supports thread-based environments. For more information, see Run MATLAB Functions in Thread-Based Environment.

## Version History

**Introduced before R2006a**

### R2024b: Generate Single-Precision Outputs

The `chirp`

function supports single-precision
outputs.

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)