MATLAB Examples

# plotpsd documentation

This function plots a power spectral density of a time series using the periodogram function.

## Syntax

```plotpsd(y,Fs)
plotpsd(y,x)
plotpsd(...,LineProperty,LineValue)
plotpsd(...,'logx')
plotpsd(...,'db')
plotpsd(...,'lambda')
h = plotpsd(...)```

## Description

plotpsd(y,Fs) plots a power spectrum of 1D array y at sampling frequency Fs using the periodogram function. Sampling frequency Fs must be a scalar.

plotpsd(y,x) plots a power spectrum of y referenced to an independent variable x. This syntax requires x and y to be of equal length and x must be equally spaced and monotically increasing. For time series, x likely has units of time; for spatial analysis x may have units of length.

plotpsd(...,LineProperty,LineValue) specifies the plot's line style with any combinations of LineSpec properties (e.g., 'color','r','linewidth',2, etc).

plotpsd(...,'logx') specfies a semilogx plot.

plotpsd(...,'db') plots power spectrum in decibels.

plotpsd(...,'lambda') labels horizontal axis as wavelengths rather than the default frequency. Note, this syntax assumes lambda = 1/f.

h = plotpsd(...) returns a handle h of the plotted graphics object.

## Examples

Using the inbuilt train whistle example, plot start by plotting the time series for context:

```load train t = (0:length(y)-1)/Fs; plot(t,y) box off xlabel 'time (s)' ```

The power spectrum of the train signal looks like this:

```plotpsd(y,Fs) xlabel 'frequency (Hz)' ```

This makes the three horns of the train quite clear! Don't like the default thin blue line? Plot a fat red line instead:

```plotpsd(y,Fs,'color','red','linewidth',4) xlabel 'frequency (Hz)' ```

Want to see that as a magenta line plotted in decibels?

```plotpsd(y,Fs,'m','db') xlabel 'frequency (Hz)' ```

Here's a black line with decibels on the vertical scale and a log scale in the horizontal direction.

```plotpsd(y,Fs,'k','db','logx') axis tight xlabel 'frequency (Hz)' ```

Suppose you have some measurements y tied to some time vector t and you don't want to go through the effort of calculating the sampling rate. If this is the case, simply enter t instead of Fs:

```plotpsd(y,t,'b:','logx') xlabel 'frequency (Hz)' ```

## Author Info

This function and supporting documentation were written by Chad A. Greene of the University of Texas at Austin's Institute for Geophysics (UTIG), October 2015.