ue`, return a one-sided spectrum for real data. If
    `False` return a two-sided spectrum. Defaults to `True`, but for
    complex data, a two-sided spectrum is always returned.
scaling : { 'density', 'spectrum' }, optional
    Selects between computing the cross spectral density ('density')
    where `Pxy` has units of V**2/Hz and computing the cross
    spectrum ('spectrum') where `Pxy` has units of V**2, if `x`
    and `y` are measured in V and `fs` is measured in Hz.
    Defaults to 'density'
axis : int, optional
    Axis along which the FFTs are computed; the default is over the
    last axis (i.e. ``axis=-1``).
mode: str {'psd', 'stft'}, optional
    Defines what kind of return values are expected. Defaults to
    'psd'.
boundary : str or None, optional
    Specifies whether the input signal is extended at both ends, and
    how to generate the new values, in order to center the first
    windowed segment on the first input point. This has the benefit
    of enabling reconstruction of the first input point when the
    employed window function starts at zero. Valid options are
    ``['even', 'odd', 'constant', 'zeros', None]``. Defaults to
    `None`.
padded : bool, optional
    Specifies whether the input signal is zero-padded at the end to
    make the signal fit exactly into an integer number of window
    segments, so that all of the signal is included in the output.
    Defaults to `False`. Padding occurs after boundary extension, if
    `boundary` is not `None`, and `padded` is `True`.

Returns
-------
freqs : ndarray
    Array of sample frequencies.
t : ndarray
    Array of times corresponding to each data segment
result : ndarray
    Array of output data, contents dependent on *mode* kwarg.

Notes
-----
Adapted from matplotlib.mlab

.. versionadded:: 0.16.0
)