www.gusucode.com > signal 案例源码程序 matlab代码 > signal/CompareSNRWithTHDAndSINADExample.m

    %% Compare SNR with THD and SINAD
% Compute and compare the signal-to-noise ratio (SNR), the total harmonic
% distortion (THD), and the signal to noise and distortion ratio (SINAD) of
% a signal.

%%
% Create a sinusoidal signal sampled at 48 kHz. The signal has a
% fundamental of frequency 1 kHz and unit amplitude. It additionally
% contains a 2 kHz harmonic with half the amplitude and additive noise with
% variance 0.1².

fs = 48e3;
t = 0:1/fs:1-1/fs;
A = 1.0;
powfund = A^2/2;
a = 0.4;
powharm = a^2/2;
s = 0.1;
varnoise = s^2;
x = A*cos(2*pi*1000*t) + ...
    a*sin(2*pi*2000*t) + s*randn(size(t));

%%
% Verify that SNR, THD, and SINAD agree with their definitions.

SNR = snr(x);
defSNR = 10*log10(powfund/varnoise);
SN = [SNR defSNR]

THD = thd(x);
defTHD = 10*log10(powharm/powfund);
TH = [THD defTHD]

SINAD = sinad(x);
defSINAD = 10*log10(powfund/(powharm+varnoise));
SI = [SINAD defSINAD]