r = sinad(x) returns
the signal to noise and distortion ratio (SINAD) in dBc of the real-valued
sinusoidal signal x. The SINAD is determined
using a modified periodogram of the same length as the input signal.
The modified periodogram uses a Kaiser window with β = 38.

r = sinad(pxx,f,'psd') specifies
the input pxx as a one-sided power spectral density
(PSD) estimate. f is a vector of frequencies
corresponding to the PSD estimates in pxx.

r = sinad(sxx,f,rbw,'power') specifies
the input as a one-sided power spectrum. rbw is
the resolution bandwidth over which each power estimate is integrated.

[r,totdistpow]
= sinad(___) returns the total noise and harmonic
distortion power of the signal.

sinad(___) with no output arguments
plots the spectrum of the signal in the current figure window and
labels its fundamental component. It uses different colors to draw
the fundamental component, the DC value, and the noise. The SINAD
appears above the plot.

Create two signals. Both signals have a fundamental
frequency of π/4 rad/sample with amplitude 1 and the first harmonic of
frequency π/2 rad/sample with amplitude 0.025. One of the signals additionally
has additive white Gaussian noise with variance 0.05^{2}.

Create the two signals. Set the random number generator
to the default settings for reproducible results. Determine the SINAD
for the signal without additive noise and compare the result to the
theoretical SINAD.

n = 0:159;
x = cos(pi/4*n)+0.025*sin(pi/2*n);
rng default;
y = cos(pi/4*n)+0.025*sin(pi/2*n)+0.05*randn(size(n));
r = sinad(x)
powfund = 1;
powharm = 0.025^2;
thSINAD = 10*log10(powfund/powharm)

r =
32.0412
thSINAD =
32.0412

Determine the SINAD for the sinusoidal signal with additive
noise. Show how including the theoretical variance of the additive
noise approximates the SINAD.

r = sinad(y)
varnoise = 0.05^2;
thSINAD = 10*log10(powfund/(powharm+varnoise))

Create a signal with a fundamental frequency
of 1 kHz and amplitude 1, sampled at 480 kHz. The signal additionally
consists of the first harmonic with amplitude 0.02 and additive white
Gaussian noise with variance 0.01^{2}.

Determine the SINAD and compare the result with the theoretical
SINAD.

fs = 48e4;
t = 0:1/fs:1-1/fs;
rng default;
x = cos(2*pi*1000*t)+0.02*sin(2*pi*2000*t)+0.01*randn(size(t));
r = sinad(x,fs)
powfund = 1;
powharm = 0.02^2;
varnoise = 0.01^2;
thSINAD = 10*log10(powfund/(powharm+varnoise*(1/fs)))

Create a signal with a fundamental frequency
of 1 kHz and amplitude 1, sampled at 480 kHz. The signal additionally
consists of the first harmonic with amplitude 0.02 and additive white
Gaussian noise with standard deviation 0.01. Set the random number
generator to the default settings for reproducible results.

Obtain the periodogram of the signal and use the periodogram
as the input to sinad.

fs = 48e4;
t = 0:1/fs:1-1/fs;
rng default;
x = cos(2*pi*1000*t)+0.02*sin(2*pi*2000*t)+0.01*randn(size(t));
[pxx,f] = periodogram(x,rectwin(length(x)),length(x),fs);
r = sinad(pxx,f,'psd')

Generate a sinusoid of frequency 2.5 kHz sampled at 50
kHz. Reset the random number generator. Add Gaussian white noise with
standard deviation 0.00005 to the signal. Pass the result through
a weakly nonlinear amplifier. Plot the SINAD.

The plot shows the spectrum used to compute the ratio
and the region treated as noise. The DC level and the fundamental
are excluded from the noise computation. The fundamental is labeled.

Sampling frequency, specified as a positive scalar. The sampling
frequency is the number of samples per unit time. If the unit of time
is seconds, the sampling frequency has units of hertz.

Resolution bandwidth specified as a positive scalar. The resolution
bandwidth is the product of the frequency resolution of the discrete
Fourier transform and the equivalent noise bandwidth of the window.

The functions thd, sfdr, sinad,
and snr measure the response
of a weakly nonlinear system stimulated by a sinusoid.

When given time-domain input, sinad performs
a periodogram using a Kaiser window with large sidelobe attenuation.
To find the fundamental frequency, the algorithm searches the periodogram
for the largest nonzero spectral component. It then computes the central
moment of all adjacent bins that decrease monotonically away from
the maximum. To be detectable, the fundamental should be at least
in the second frequency bin. Higher harmonics are at integer multiples
of the fundamental frequency. If a harmonic lies within the monotonically
decreasing region in the neighborhood of another, its power is considered
to belong to the larger harmonic. This larger harmonic may or may
not be the fundamental.

The function estimates a noise level using the median power
in the regions containing only noise and distortion. The DC component
is excluded from the calculation. The noise at each point is the estimated
level or the ordinate of the point, whichever is smaller. The noise
is then subtracted from the values of the signal and the harmonics.

sinad fails if the fundamental
is not the highest spectral component in the signal.

Ensure that the frequency components are far enough apart to
accommodate for the sidelobe width of the Kaiser window. If this is
not feasible, you can use the 'power' flag and
compute a periodogram with a different window.