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

sfdr

Динамический диапазон, свободный от паразитных составляющих.

Библиотека

EngeeDSP

Синтаксис

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

  • r = sfdr(x) — возвращает динамический диапазон, свободный от паразитных составляющих (Spurious-Free Dynamic Range, SFDR) r в дБ вещественного синусоидального сигнала x. Функция sfdr вычисляет спектр мощности, используя модифицированную периодограмму и окно Кайзера с . Среднее значение вычитается из x перед вычислением спектра мощности. Количество точек, используемых при вычислении дискретного преобразования Фурье (ДПФ), равно длине сигнала x.

  • r = sfdr(x,fs) — возвращает SFDR входного сигнала x во временной области при заданной частоте дискретизации fs. Значение fs по умолчанию равно 1 Гц.

  • r = sfdr(x,fs,msd) — возвращает SFDR, учитывая только паразитные составляющие, отстоящие от основной (несущей) частоты на минимальное расстояние между паразитными составляющими msd, указанное в циклах/единицу времени. Частота дискретизации равна fs. Если несущая частота равна Fc, то все паразитные составляющие в интервале (Fc−msd,Fc+msd) игнорируются.

  • r = sfdr(sxx,f,"power") — возвращает SFDR одностороннего спектра мощности вещественнозначного сигнала sxx. Аргумент f — вектор частот, соответствующих оценкам мощности в sxx. Первый элемент f должен быть равен 0. Алгоритм удаляет всю мощность, монотонно убывающую при удалении от ячейки постоянной составляющей.

  • r = sfdr(sxx,f,msd,"power") — возвращает SFDR, учитывая только паразитные составляющие, отстоящие от основной (несущей) частоты на минимальное расстояние между паразитными составляющими msd. Если несущая частота равна Fc, то все паразитные составляющие в интервале (Fc−msd,Fc+msd) игнорируются. Если на вход функции sfdr подается спектр мощности, указание msd может предотвратить идентификацию высоких уровней боковых лепестков как паразитных составляющих.

  • r,spurpow,spurfreq = sfdr(___) — возвращает мощность и частоту наибольшей паразитной составляющей.

  • sfdr(___, out=:plot) — строит спектр сигнала в текущем окне графиков. Для отображения основной составляющей, значения постоянной составляющей и остальной части спектра используются разные цвета. SFDR затеняется, и его значение отображается над графиком. Также отмечаются основная гармоника и наибольшая паразитная составляющая.

Аргументы

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

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

Details

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

Типы данных

Float64

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

Details

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

Типы данных

Float64

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

Details

Минимальное количество бинов дискретного преобразования Фурье (ДПФ), которые следует игнорировать при вычислении SFDR, заданное как положительный скаляр. Этот аргумент можно использовать для игнорирования паразитных составляющих или боковых лепестков, возникающих вблизи основной частоты. Например, если несущая частота равна Fc, то все паразитные составляющие в диапазоне (Fc−msd,Fc+msd) игнорируются.

Типы данных

Float64

# sxx — односторонний спектр мощности
вектор-строка или вектор-столбец положительных чисел

Details

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

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

Типы данных

Float64

# f — вектор частот
вектор-строка или вектор-столбец неотрицательных чисел

Details

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

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

# r — динамический диапазон, свободный от паразитных составляющих
вещественный скаляр

Details

Динамический диапазон, свободный от паразитных составляющих, в дБ, возвращаемый в виде вещественного скаляра. Динамический диапазон, свободный от паразитных составляющих, — это разница в дБ между мощностью на пиковой частоте и мощностью на следующей по величине частоте (паразитная составляющая). Если входные данные — временной ряд, оценки мощности получаются из модифицированной периодограммы с использованием окна Хэмминга. Длина ДПФ, используемого в периодограмме, равна длине входного сигнала x. Если вы хотите использовать другой спектр мощности в качестве основы для измерения SFDR, вы можете ввести свой спектр мощности, используя флаг "power".

Типы данных

Float64

# spurpow — мощность наибольшей паразитной составляющей
вещественный скаляр

Details

Мощность наибольшей паразитной составляющей в дБ, возвращаемая в виде вещественного скаляра.

Типы данных

Float64

# spurfreq — частота наибольшей паразитной составляющей
вещественный скаляр

Details

Частота наибольшей паразитной составляющей в Гц, возвращаемая в виде вещественного скаляра. Если частота дискретизации не указана в качестве входного аргумента, функция sfdr предполагает частоту дискретизации 1 Гц.

Типы данных

Float64

Примеры

SFDR синусоиды

Details

Определим SFDR для тона 10 МГц с амплитудой 1, дискретизированного на частоте 100 МГц. На первой гармонике (20 МГц) присутствует паразитная составляющая с амплитудой .

import EngeeDSP.Functions: sfdr

deltat = 1e-8
fs = 1 / deltat
t = 0:deltat:1e-5-deltat
x = cos.(2 * π * 10e6 * t) + 3.16e-4 * cos.(2 * π * 20e6 * t)
r = sfdr(x, fs)[1]
70.00625834763413

Выведем спектр сигнала. Укажем основную гармонику, значение постоянной составляющей, паразитную составляющую и SFDR.

sfdr(x, fs, out=:plot)

sfdr 1

Минимальное расстояние между паразитными составляющими

Details

Определим SFDR для тона 10 МГц с амплитудой 1, дискретизированного на частоте 100 МГц. На первой гармонике (20 МГц) присутствует паразитная составляющая с амплитудой . Пропустим первую гармонику, используя минимальное расстояние между паразитными составляющими 11 МГц.

import EngeeDSP.Functions: sfdr

deltat = 1e-8
fs = 1 / deltat
t = 0:deltat:1e-5-deltat
x = cos.(2 * π * 10e6 * t) + 3.16e-4 * cos.(2 * π * 20e6 * t) + 0.1e-5 * cos.(2 * π * 25e6 * t)
r = sfdr(x, fs, 11e6)[1]
120.00000000390743

Выведем спектр сигнала. Укажем основную гармонику, значение постоянной составляющей, паразитные составляющие и SFDR.

sfdr(x, fs, 11e6, out=:plot)

sfdr 2

Частота и мощность наибольшей паразитной составляющей

Details

Определим частоту в МГц наибольшей паразитной составляющей. Входной сигнал — тон 10 МГц с амплитудой 1, дискретизированный с частотой 100 МГц. На первой гармонике (20 МГц) присутствует паразитная составляющая с амплитудой .

import EngeeDSP.Functions: sfdr

deltat = 1e-8
t = 0:deltat:1e-6-deltat
x = cos.(2 * π * 10e6 * t) + 3.16e-4 * cos.(2 * π * 20e6 * t)
r, spurpow, spurfreq = sfdr(x, 1 / deltat)
spur_MHz = spurfreq / 1e6
20.0

Дополнительно

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

Details

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

При задании входных данных во временной области функция sfdr строит периодограмму, используя окно Кайзера с большим ослаблением боковых лепестков. Чтобы найти основную частоту, алгоритм ищет на периодограмме наибольшую ненулевую спектральную составляющую. Затем он вычисляет центральный момент всех соседних интервалов, монотонно убывающих при удалении от максимума. Для обнаружения основная частота должна находиться как минимум во втором частотном бине. Если гармоника находится в монотонно убывающей области рядом с другой, ее мощность считается принадлежащей большей гармонике. Эта большая гармоника может быть основной, а может и не быть. Алгоритм игнорирует всю мощность, монотонно убывающую при удалении от постоянной составляющей.

Функция sfdr завершается ошибкой, если основная частота не является самой мощной спектральной составляющей сигнала.

Убедитесь, что частотные компоненты достаточно разнесены, чтобы учесть ширину боковых лепестков окна Кайзера. Если это невозможно, можно использовать флаг "power" и вычислить периодограмму с другим окном.