matplotlib 3.5.1

NotesOther ParametersParametersReturnsBackRef
csd(self, x, y, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None, return_line=None, *, data=None, **kwargs)

The cross spectral density $P_{xy}$ by Welch's average periodogram method. The vectors x and y are divided into NFFT length segments. Each segment is detrended by function detrend and windowed by function window. noverlap gives the length of the overlap between segments. The product of the direct FFTs of x and y are averaged over each segment to compute $P_{xy}$ , with a scaling to correct for power loss due to windowing.

If len(x) < NFFT or len(y) < NFFT, they will be zero padded to NFFT.

Notes

For plotting, the power is plotted as $10 \log_{10}(P_{xy})$ for decibels, though $P_{xy}$ itself is returned.

Other Parameters

data : indexable object, optional

If given, the following parameters also accept a string s , which is interpreted as data[s] (unless this raises an exception):

x, y

**kwargs :

Keyword arguments control the .Line2D properties:

Properties: agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array alpha: scalar or None animated: bool antialiased or aa: bool clip_box: .Bbox clip_on: bool clip_path: Patch or (Path, Transform) or None color or c: color dash_capstyle: .CapStyle or {'butt', 'projecting', 'round'} dash_joinstyle: .JoinStyle or {'miter', 'round', 'bevel'} dashes: sequence of floats (on/off ink in points) or (None, None) data: (2, N) array or two 1D arrays drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default' figure: .Figure fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'} gid: str in_layout: bool label: object linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...} linewidth or lw: float marker: marker style string, ~.path.Path or ~.markers.MarkerStyle markeredgecolor or mec: color markeredgewidth or mew: float markerfacecolor or mfc: color markerfacecoloralt or mfcalt: color markersize or ms: float markevery: None or int or (int, int) or slice or list[int] or float or (float, float) or list[bool] path_effects: .AbstractPathEffect picker: float or callable[[Artist, Event], tuple[bool, dict]] pickradius: float rasterized: bool sketch_params: (scale: float, length: float, randomness: float) snap: bool or None solid_capstyle: .CapStyle or {'butt', 'projecting', 'round'} solid_joinstyle: .JoinStyle or {'miter', 'round', 'bevel'} transform: unknown url: str visible: bool xdata: 1D array ydata: 1D array zorder: float

Parameters

x, y : 1-D arrays or sequences

Arrays or sequences containing the data.

Fs : float, default: 2

The sampling frequency (samples per time unit). It is used to calculate the Fourier frequencies, freqs, in cycles per time unit.

window : callable or ndarray, default: `.window_hanning`

A function or a vector of length NFFT. To create window vectors see .window_hanning , .window_none , numpy.blackman , numpy.hamming , numpy.bartlett , scipy.signal , scipy.signal.get_window , etc. If a function is passed as the argument, it must take a data segment as an argument and return the windowed version of the segment.

sides : {'default', 'onesided', 'twosided'}, optional

Which sides of the spectrum to return. 'default' is one-sided for real data and two-sided for complex data. 'onesided' forces the return of a one-sided spectrum, while 'twosided' forces two-sided.

pad_to : int, optional

The number of points to which the data segment is padded when performing the FFT. This can be different from NFFT, which specifies the number of data points used. While not increasing the actual resolution of the spectrum (the minimum distance between resolvable peaks), this can give more points in the plot, allowing for more detail. This corresponds to the n parameter in the call to fft(). The default is None, which sets pad_to equal to NFFT

NFFT : int, default: 256

The number of data points used in each block for the FFT. A power 2 is most efficient. This should NOT be used to get zero padding, or the scaling of the result will be incorrect; use pad_to for this instead.

detrend : {'none', 'mean', 'linear'} or callable, default: 'none'

The function applied to each segment before fft-ing, designed to remove the mean or linear trend. Unlike in MATLAB, where the detrend parameter is a vector, in Matplotlib it is a function. The ~matplotlib.mlab module defines .detrend_none , .detrend_mean , and .detrend_linear , but you can use a custom function as well. You can also use a string to choose one of the functions: 'none' calls .detrend_none . 'mean' calls .detrend_mean . 'linear' calls .detrend_linear .

scale_by_freq : bool, default: True

Whether the resulting density values should be scaled by the scaling frequency, which gives density in units of Hz^-1. This allows for integration over the returned frequency values. The default is True for MATLAB compatibility.

noverlap : int, default: 0 (no overlap)

The number of points of overlap between segments.

Fc : int, default: 0

The center frequency of x, which offsets the x extents of the plot to reflect the frequency range used when a signal is acquired and then filtered and downsampled to baseband.

return_line : bool, default: False

Whether to include the line object plotted in the returned values.

Returns

Pxy : 1-D array

The values for the cross spectrum $P_{xy}$ before scaling (complex valued).

freqs : 1-D array

The frequencies corresponding to the elements in Pxy.

line : `~matplotlib.lines.Line2D`

The line created by this function. Only returned if return_line is True.

Plot the cross-spectral density.

See Also

psd

is equivalent to setting y = x .

Examples

See :

Back References

The following pages refer to to this document either explicitly or contain code examples using this.

matplotlib.axes._axes.Axes.psd

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


File: /matplotlib/axes/_axes.py#7105
type: <class 'function'>
Commit: