sfdr
Динамический диапазон, свободный от паразитных составляющих.
| Библиотека |
|
Синтаксис
Вызов функции
-
r = sfdr(x)— возвращает динамический диапазон, свободный от паразитных составляющих (Spurious-Free Dynamic Range, SFDR)rв дБ вещественного синусоидального сигналаx. Функцияsfdrвычисляет спектр мощности, используя модифицированную периодограмму и окно Кайзера с . Среднее значение вычитается изxперед вычислением спектра мощности. Количество точек, используемых при вычислении дискретного преобразования Фурье (ДПФ), равно длине сигналаx.
-
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может предотвратить идентификацию высоких уровней боковых лепестков как паразитных составляющих.
-
sfdr(___, out=:plot)— строит спектр сигнала в текущем окне графиков. Для отображения основной составляющей, значения постоянной составляющей и остальной части спектра используются разные цвета. SFDR затеняется, и его значение отображается над графиком. Также отмечаются основная гармоника и наибольшая паразитная составляющая.
Аргументы
Входные аргументы
#
x —
вещественный синусоидальный сигнал
вектор-строка | вектор-столбец
Details
Вещественный синусоидальный сигнал, заданный как вектор-строка или вектор-столбец. Среднее значение вычитается из x перед получением спектра мощности для вычисления SFDR.
| Типы данных |
|
#
fs —
частота дискретизации
1 (по умолчанию) | положительный скаляр
Details
Частота дискретизации сигнала в циклах/единицу времени, заданная как положительный скаляр. Если единицей времени являются секунды, fs измеряется в Гц.
| Типы данных |
|
#
msd —
минимальное расстояние между паразитными составляющими
0 (по умолчанию) | положительный скаляр
Details
Минимальное количество бинов дискретного преобразования Фурье (ДПФ), которые следует игнорировать при вычислении SFDR, заданное как положительный скаляр. Этот аргумент можно использовать для игнорирования паразитных составляющих или боковых лепестков, возникающих вблизи основной частоты. Например, если несущая частота равна Fc, то все паразитные составляющие в диапазоне (Fc−msd,Fc+msd) игнорируются.
| Типы данных |
|
#
sxx —
односторонний спектр мощности
вектор-строка или вектор-столбец положительных чисел
Details
Односторонний спектр мощности для использования в вычислении SFDR, заданный как вектор-строка или вектор-столбец.
Спектр мощности должен быть выражен в линейных единицах, а не в децибелах.
| Типы данных |
|
Выходные аргументы
#
r —
динамический диапазон, свободный от паразитных составляющих
вещественный скаляр
Details
Динамический диапазон, свободный от паразитных составляющих, в дБ, возвращаемый в виде вещественного скаляра. Динамический диапазон, свободный от паразитных составляющих, — это разница в дБ между мощностью на пиковой частоте и мощностью на следующей по величине частоте (паразитная составляющая). Если входные данные — временной ряд, оценки мощности получаются из модифицированной периодограммы с использованием окна Хэмминга. Длина ДПФ, используемого в периодограмме, равна длине входного сигнала x. Если вы хотите использовать другой спектр мощности в качестве основы для измерения SFDR, вы можете ввести свой спектр мощности, используя флаг "power".
| Типы данных |
|
#
spurpow —
мощность наибольшей паразитной составляющей
вещественный скаляр
Details
Мощность наибольшей паразитной составляющей в дБ, возвращаемая в виде вещественного скаляра.
| Типы данных |
|
#
spurfreq —
частота наибольшей паразитной составляющей
вещественный скаляр
Details
Частота наибольшей паразитной составляющей в Гц, возвращаемая в виде вещественного скаляра. Если частота дискретизации не указана в качестве входного аргумента, функция sfdr предполагает частоту дискретизации 1 Гц.
| Типы данных |
|
Примеры
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)
Минимальное расстояние между паразитными составляющими
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)
Частота и мощность наибольшей паразитной составляющей
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 строит периодограмму, используя окно Кайзера с большим ослаблением боковых лепестков. Чтобы найти основную частоту, алгоритм ищет на периодограмме наибольшую ненулевую спектральную составляющую. Затем он вычисляет центральный момент всех соседних интервалов, монотонно убывающих при удалении от максимума. Для обнаружения основная частота должна находиться как минимум во втором частотном бине. Если гармоника находится в монотонно убывающей области рядом с другой, ее мощность считается принадлежащей большей гармонике. Эта большая гармоника может быть основной, а может и не быть. Алгоритм игнорирует всю мощность, монотонно убывающую при удалении от постоянной составляющей.
Функция sfdr завершается ошибкой, если основная частота не является самой мощной спектральной составляющей сигнала.
Убедитесь, что частотные компоненты достаточно разнесены, чтобы учесть ширину боковых лепестков окна Кайзера. Если это невозможно, можно использовать флаг "power" и вычислить периодограмму с другим окном.