thd

Общее гармоническое искажение

Синтаксис

r = thd(x)
r = thd(x,fs,n)
r = thd(pxx,f,'psd')
r = thd(pxx,f,n,'psd')
r = thd(sxx,f,rbw,'power')
r = thd(sxx,f,rbw,n,'power')
r = thd(___,'aliased')
[r,harmpow,harmfreq] = thd(___)
thd(___)

Описание

пример

r = thd(x) возвращает общее гармоническое искажение (THD) в дБн синусоидального x сигнала с действительным знаком. Общее гармоническое искажение определяется от основной частоты и первых пяти гармоник с помощью измененной периодограммы той же длины как входной сигнал. Измененная периодограмма использует окно Kaiser с β = 38.

пример

r = thd(x,fs,n) задает частоту дискретизации, fs и количество гармоник (включая основной принцип), чтобы использовать в вычислении THD.

r = thd(pxx,f,'psd') задает вход pxx как одностороннюю оценку степени спектральной плотности (PSD). f является вектором частот, соответствующих оценкам PSD в pxx.

пример

r = thd(pxx,f,n,'psd') задает количество гармоник (включая основной принцип), чтобы использовать в вычислении THD.

пример

r = thd(sxx,f,rbw,'power') задает вход как односторонний спектр мощности. rbw является пропускной способностью разрешения, по которой интегрирована каждая оценка степени.

r = thd(sxx,f,rbw,n,'power') задает количество гармоник (включая основной принцип), чтобы использовать в вычислении THD.

пример

r = thd(___,'aliased') гармоники отчетов основного принципа, которые искажаются в область значений Найквиста. Используйте эту опцию, когда входной сигнал будет субдискретизироваться. Если вы не задаете эту опцию, или если вы устанавливаете ее на 'omitaliases', то функция игнорирует любые гармоники основной частоты, которые лежат за пределами области значений Найквиста.

пример

[r,harmpow,harmfreq] = thd(___) возвращает степени (в дБ) и частоты гармоник, включая основной принцип.

пример

thd(___) без выходных аргументов строит спектр сигнала и аннотирует гармоники в окне текущей фигуры. Это использует различные цвета, чтобы чертить основной компонент, гармоники, и уровень DC и шум. THD появляется выше графика. Основной принцип и гармоники маркированы. Термин DC исключен из измерения и не маркирован.

Примеры

свернуть все

Этот пример показывает явным образом, как вычислить общее гармоническое искажение в дБн для сигнала, состоящего из основного принципа и двух гармоник. Явное вычисление проверяется по результату, возвращенному thd.

Создайте сигнал, выбранный на уровне 1 кГц. Сигнал состоит из основного принципа на 100 Гц с амплитудой 2 и две гармоники на уровне 200 и 300 Гц с амплитудами 0.01 и 0.005. Получите общее гармоническое искажение явным образом и использование thd.

t = 0:0.001:1-0.001;
x = 2*cos(2*pi*100*t)+0.01*cos(2*pi*200*t)+0.005*cos(2*pi*300*t);
tharmdist = 10*log10((0.01^2+0.005^2)/2^2)
tharmdist = -45.0515
r = thd(x)
r = -45.0515

Создайте сигнал, выбранный на уровне 1 кГц. Сигнал состоит из основного принципа на 100 Гц с амплитудой 2 и три гармоники в 200, 300, и 400 Гц с амплитудами 0.01, 0.005, и 0.0025.

Определите номер гармоник к 3. Это включает основной принцип. Соответственно, степень в 100, 200, и 300 Гц используется в вычислении THD.

t = 0:0.001:1-0.001;
x = 2*cos(2*pi*100*t)+0.01*cos(2*pi*200*t)+ ...
    0.005*cos(2*pi*300*t)+0.0025*sin(2*pi*400*t);
r = thd(x,1000,3)
r = -45.0515

Определение количества гармоник, равных 3, игнорирует степень на уровне 400 Гц в вычислении THD.

Создайте сигнал, выбранный на уровне 1 кГц. Сигнал состоит из основного принципа на 100 Гц с амплитудой 2 и три гармоники в 200, 300, и 400 Гц с амплитудами 0.01, 0.005, и 0.0025.

Получите периодограмму оценка PSD сигнала и используйте оценку PSD в качестве входа к thd. Определите номер гармоник к 3. Это включает основной принцип. Соответственно, степень в 100, 200, и 300 Гц используется в вычислении THD.

t = 0:0.001:1-0.001;
fs = 1000;
x = 2*cos(2*pi*100*t)+0.01*cos(2*pi*200*t)+ ...
    0.005*cos(2*pi*300*t)+0.0025*sin(2*pi*400*t);
[pxx,f] = periodogram(x,rectwin(length(x)),length(x),fs);
r = thd(pxx,f,3,'psd')
r = -45.0515

Определите THD путем введения спектра мощности, полученного с Окном Хэмминга и пропускной способностью разрешения окна.

Создайте сигнал, выбранный на уровне 10 кГц. Сигнал состоит из основного принципа на 100 Гц с амплитудой 2 и три нечетных гармоники в 300, 500, и 700 Гц с амплитудами 0.01, 0.005, и 0.0025. Задайте количество гармоник к 7. Определите THD.

fs = 10000;
t = 0:1/fs:1-1/fs;
x = 2*cos(2*pi*100*t)+0.01*cos(2*pi*300*t)+ ...
    0.005*cos(2*pi*500*t)+0.0025*sin(2*pi*700*t);
[sxx,f] = periodogram(x,hamming(length(x)),length(x),fs,'power');
rbw = enbw(hamming(length(x)),fs);
r = thd(sxx,f,rbw,7,'power')
r = -44.8396

Сгенерируйте сигнал, который напоминает вывод слабо нелинейного усилителя с тоном на 2,1 кГц, как введено. Сигнал выбирается в течение 1 секунды на уровне 10 кГц. Вычислите и постройте спектр мощности сигнала. Используйте окно Kaiser с β = 38 для вычисления.

Fs = 10000;
f = 2100;

t = 0:1/Fs:1; 
x = tanh(sin(2*pi*f*t)+0.1) + 0.001*randn(1,length(t));

periodogram(x,kaiser(length(x),38),[],Fs,'power')

Гармоники терпят от шума на частотах 4,2 кГц, 6,3 кГц, 8,4 кГц, 10,5 кГц, 12,6 кГц и 14,7 кГц. Все частоты за исключением первой больше, чем частота Найквиста. Гармоники искажаются соответственно в 3,7 кГц, 1,6 кГц, 0,5 кГц, 2,6 кГц и 4,7 кГц.

Вычислите общее гармоническое искажение сигнала. По умолчанию thd обрабатывает искаженные гармоники как часть шума.

thd(x,Fs,7);

Повторите вычисление, но теперь обработайте искаженные гармоники как часть сигнала.

thd(x,Fs,7,'aliased');

Создайте сигнал, выбранный на уровне 10 кГц. Сигнал состоит из основного принципа на 100 Гц с амплитудой 2 и три нечетных гармоники в 300, 500, и 700 Гц с амплитудами 0.01, 0.005, и 0.0025. Задайте количество гармоник к 7. Определите THD, степень в гармониках и соответствующие частоты.

fs = 10000;
t = 0:1/fs:1-1/fs;
x = 2*cos(2*pi*100*t)+0.01*cos(2*pi*300*t)+ ...
    0.005*cos(2*pi*500*t)+0.0025*sin(2*pi*700*t);
[r,harmpow,harmfreq] = thd(x,10000,7);
[harmfreq harmpow]
ans = 7×2

  100.0000    3.0103
  201.0000 -321.0983
  300.0000  -43.0103
  399.0000 -281.9259
  500.0000  -49.0309
  599.0000 -282.1066
  700.0000  -55.0515

Степени в четных гармониках находятся на порядке -300 дБ, который соответствует амплитуде 10-15.

Сгенерируйте синусоиду частоты 2,5 кГц, выбранные на уровне 50 кГц. Добавьте Гауссов белый шум со стандартным отклонением 0.00005 к сигналу. Передайте результат через слабо нелинейный усилитель. Постройте THD.

fs = 5e4;
f0 = 2.5e3;
N = 1024;
t = (0:N-1)/fs;

ct = cos(2*pi*f0*t);
cd = ct + 0.00005*randn(size(ct));

amp = [1e-5 5e-6 -1e-3 6e-5 1 25e-3];
sgn = polyval(amp,cd);
thd(sgn,fs);

График показывает, что спектр раньше вычислял отношение и область, обработанную как шум. Уровень DC исключен из вычисления. Основной принцип и гармоники маркированы.

Входные параметры

свернуть все

Синусоидальный входной сигнал с действительным знаком, заданный как строка или вектор-столбец.

Пример: cos(pi/4*(0:159))+cos(pi/2*(0:159))

Типы данных: single | double

Частота дискретизации, заданная как положительная скалярная величина. Частота дискретизации является количеством выборок в единицу времени. Если модуль времени является секундами, то частота дискретизации имеет модули Гц.

Количество гармоник, заданных как положительное целое число.

Односторонняя оценка PSD, заданная как неотрицательный вектор-столбец с действительным знаком.

Степень спектральная плотность должна быть выражена в линейных модулях, не децибелах. Используйте db2pow, чтобы преобразовать значения децибела, чтобы привести в действие значения.

Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) задает периодограмму оценка PSD шумной двухканальной синусоиды, выбранной в 2π Гц и частоты, на которых это вычисляется.

Типы данных: single | double

Циклические частоты, соответствующие односторонней оценке PSD, pxx, заданному как строка или вектор-столбец. Первый элемент f должен быть 0.

Типы данных: double | single

Спектр мощности, заданный как неотрицательная строка с действительным знаком или вектор-столбец.

Спектр мощности должен быть выражен в линейных модулях, не децибелах. Используйте db2pow, чтобы преобразовать значения децибела, чтобы привести в действие значения.

Пример: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),'power') задает оценку спектра мощности периодограммы двухканальной синусоиды, встроенной в белый Гауссов шум и нормированные частоты, на которых это вычисляется.

Пропускная способность разрешения, заданная как положительная скалярная величина. Пропускная способность разрешения является продуктом разрешения частоты дискретного преобразования Фурье и эквивалентной шумовой пропускной способности окна.

Выходные аргументы

свернуть все

Общее гармоническое искажение в дБн, возвращенном как скаляр с действительным знаком.

Степень гармоник, возвращенных как скаляр с действительным знаком или вектор, выражается в дБ. Является ли harmpow скаляром, или вектор зависит от количества гармоник, которые вы задаете как входной параметр n.

Частоты гармоник, возвращенных как неотрицательный скаляр или вектор. Является ли harmfreq скаляром, или вектор зависит от количества гармоник, которые вы задаете как входной параметр n.

Больше о

свернуть все

Функции измерения искажения

Функции thd, sfdr, sinad и snr измеряют ответ слабо нелинейной системы, стимулированной синусоидой.

Когда данный вход временного интервала, thd выполняет периодограмму с помощью окна Kaiser с большим затуханием бокового лепестка. Чтобы найти основную частоту, алгоритм ищет периодограмму самый большой ненулевой спектральный компонент. Это затем вычисляет центральный момент всех смежных интервалов, которые уменьшаются монотонно далеко от максимума. Чтобы быть обнаруживаемым, основной принцип должен быть, по крайней мере, во втором интервале частоты. Более высокие гармоники в целочисленных множителях основной частоты. Если гармоника находится в монотонно уменьшающейся области в окружении другого, его степень, как рассматривается, принадлежит большей гармонике. Эта большая гармоника может или не может быть основным принципом.

thd перестал работать, если основной принцип не является самым высоким спектральным компонентом в сигнале.

Гарантируйте, что частотные составляющие достаточно далеки независимо, чтобы разместить для ширины бокового лепестка окна Kaiser. Если это не выполнимо, можно использовать флаг 'power' и вычислить периодограмму с различным окном.

Введенный в R2013b