Документация Engee

toi

Точка пересечения третьего порядка.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • oip3 = toi(x) — возвращает точку пересечения третьего порядка (Third-Order Intercept point, TOI) по выходу, в децибелах (дБ), вещественного синусоидального двухтонального входного сигнала x. Вычисление выполняется по периодограмме той же длины, что и входной сигнал, с использованием окна Кайзера с .

  • oip3 = toi(x,fs) — задает частоту дискретизации fs. Значение fs по умолчанию равно 1.

  • oip3 = toi(pxx,f,"psd") — задает входной сигнал как одностороннюю спектральную плотность мощности (СПМ) pxx вещественного сигнала. Аргумент f — вектор частот, соответствующий вектору оценок pxx.

  • oip3 = toi(sxx,f,rbw,"power") — задает входной сигнал как односторонний спектр мощности sxx вещественного сигнала. Аргумент rbw — разрешающая способность по частоте, в которой интегрируется каждая оценка мощности.

  • oip3,fundpow,fundfreq,imodpow,imodfreq = toi(___) — также возвращает мощность fundpow и частоты fundfreq двух основных синусоид. Также возвращает мощность imodpow и частоты imodfreq нижних и верхних интермодуляционных составляющих. В данном синтаксисе можно использовать любые входные аргументы из предыдущих вариантов синтаксиса.

  • toi(___, out=:plot) — строит спектр сигнала и аннотирует нижние и верхние основные составляющие и интермодуляционные составляющие . Высшие гармоники и интермодуляционные составляющие не помечаются. TOI отображается над графиком.

Аргументы

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

# x — вещественный синусоидальный двухтональный сигнал
вектор

Details

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

Типы данных

Float64, Float32

# fs — частота дискретизации
1 (по умолчанию) | положительный вещественный скаляр

Details

Частота дискретизации, заданная как положительный вещественный скаляр. Частота дискретизации — это количество отсчетов в единицу времени. Если единицей времени являются секунды, то частота дискретизации измеряется в герцах.

Типы данных

Float64, Float32

# pxx — односторонняя оценка СПМ
вектор

Details

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

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

Типы данных

Float64, Float32

# f — циклические частоты
вектор

Details

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

Типы данных

Float64, Float32

# sxx — спектр мощности
вектор

Details

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

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

Типы данных

Float64, Float32

# rbw — разрешающая способность по частоте
скаляр

Details

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

Типы данных

Float64, Float32

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

# oip3 — точка пересечения третьего порядка
скаляр

Details

Выходная точка пересечения третьего порядка синусоидального двухтонального сигнала, возвращаемая в виде вещественного скаляра, выраженного в дБ. Если второй основной тон является второй гармоникой первого основного тона, то нижняя часть интермодуляционной составляющей находится на нулевой частоте. В таких случаях функция возвращает NaN.

Типы данных

Float64, Float32

# fundpow — мощность основных синусоид
вектор-строка

Details

Мощность, содержащаяся в двух основных синусоидах входного сигнала, возвращаемая в виде двухэлементного вещественного вектора-строки.

Типы данных

Float64, Float32

# fundfreq — частоты основных синусоид
вектор-строка

Details

Частоты двух основных синусоид входного сигнала, возвращаемые в виде двухэлементного вещественного вектора-строки.

Типы данных

Float64, Float32

# imodpow — мощность интермодуляционных составляющих
вектор-строка

Details

Мощность, содержащаяся в нижних и верхних интермодуляционных составляющих входного сигнала, возвращаемая в виде двухэлементного вещественного вектора-строки.

Типы данных

Float64, Float32

# imodfreq — частоты интермодуляционных составляющих
вектор-строка

Details

Частоты нижних и верхних интермодуляционных составляющих входного сигнала, возвращаемые в виде двухэлементного вещественного вектора-строки.

Типы данных

Float64, Float32

Примеры

Точка пересечения третьего порядка двухтонального нелинейного сигнала с шумом

Details

Создадим двухтональную синусоиду с частотами кГц и кГц, дискретизированную с частотой 48 кГц. Сделаем сигнал нелинейным, подав его на полином. Добавим шум. Установим настройки генератора случайных чисел по умолчанию для получения воспроизводимых результатов. Вычислим точку пересечения третьего порядка. Убедимся, что интермодуляционные составляющие возникают на частотах кГц и кГц.

import EngeeDSP.Functions: polyval, randn, toi

using Random
Random.seed!(123)

fi1 = 5e3
fi2 = 6e3
Fs = 48e3
N = 1000
x = sin.(2π * fi1 / Fs * (1:N)) + sin.(2π * fi2 / Fs * (1:N))
y = polyval([0.5e-3 1e-7 0.1 3e-3], x) + 1e-5 * randn(1, N)

myTOI, Pfund, Ffund, Pim3, Fim3 = toi(y, Fs)
println("myTOI = ", myTOI)
println("Fim3 = ", Fim3)
myTOI = 1.3977501986380254
Fim3 = [4000.196234482638 6999.864782145359]

Литература

  1. Kundert, Kenneth S. «Accurate and Rapid Measurement of IP2 and IP3.» Designer’s Guide Community. May, 2002. https://designers-guide.org/analysis/intercept-point.pdf.