Проектирование оконных функций — это приложение Engee, предназначенное для расчета, визуализации, анализа и экспорта характеристик спектральных оконных функций во временной и частотной областях.
Чтобы открыть приложение, перейдите в рабочее пространство Engee и в разделе программной разработки слева выберите инструмент Командная строка. В открывшемся окне введите команду:
engee.genie.start("WindowDesigner")
После выполнения команды щелкните по появившейся ссылке.
Открыть приложение можно и другим способом: в левом верхнем углу в разделе Приложения Engee выберите Проектирование оконных функций.
Приложение будет функционировать с момента запуска до принудительной остановки или завершения работы среды Engee. Остановка приложения осуществляется с помощью команды:
engee.genie.stop("WindowDesigner")
Приложение работает в отдельной вкладке браузера и по умолчанию имеет следующий вид:
С помощью приложения можно:
Рассчитывать и анализировать характеристики в частотной и временных областях для параметрических и непараметрических оконных функций;
Визуализировать характеристики во временной и частотной области для одного или нескольких окон;
Импортировать и экспортировать конфигурацию (сессию) приложения;
Сохранять вычисленные коэффициенты окна в виде переменной рабочей области, отдельного файла (расширения CSV, TXT, JLD2, MAT) и исполняемого jl-файла.
Работа с приложением
Для работы с приложением используются четыре секции:
Панель инструментов (1) — секция для глобального управления текущей сессией: справа расположен блок управляющих элементов, обеспечивающих импорт ранее сохраненных сессий, экспорт рассчитанных коэффициентов в файлы различных форматов или сохранение сессии, вызов меню настроек отображения графиков, а также прямой переход к документации Engee. В левой части секции отображены название приложения и номер его текущей версии.
В меню настроек отображения находятся три флажка: два из них влияют на отображение графиков в области визуализации, а третий — на отображение легенды на этих графиках. В этом меню также находятся параметры анализа, подробнее о них см. в разделе Параметры.
Область визуализации (2) — центральная секция, предназначенная для одновременного анализа характеристик выбранных оконных функций во временной и частотной областях, отображающихся на двух интерактивных графических окнах: «Временная область» и «Частотная область» соответственно.
Под графическими полями располагаются числовые метрики качества, рассчитанные для текущих характеристик окна:
Фактор утечки — характеризует степень спектрального растекания и выражается в процентах доли энергии сигнала, приходящегося на боковые лепестки спектра окна;
Уровень боковых лепестков — характеризует максимальный уровень бокового лепестка относительно главного максимума амплитудно-частотной характеристики (АЧХ) и выражается в дБ;
Ширина главного лепестка по −3 дБ — характеризует ширину спектра оконной функции по уровню −3 дБ и выражается в единицах частоты или нормированных единицах частоты.
Список окон (3) — интерактивный менеджер созданных оконных функций. На панели можно найти окно по названию, добавить новое окно, скопировать или удалить существующее, а также выгрузить рассчитанные весовые коэффициенты в рабочую область Engee.
Параметры (4) — секция, в которой задаются значения параметров. Каждому параметру присвоено значение по умолчанию, которое можно изменить.
В разделе Параметры представлены все доступные параметры приложения с пояснениями.
Параметры
Далее приводится обзор параметров приложения.
#Имя —
название окна
window_1 (по умолчанию) | строка
Details
Укажите название оконной функции. Имя должно быть непустым и уникальным среди всех окон в текущей сессии.
Пользовательское — позволяет задать произвольную оконную функцию посредством написания кода на языке Julia в поле EngeeCode. Может быть реализовано в различных формах:
Аналитическое выражение — компактная формула, задающая коэффициенты непосредственно. Например, выражение abs.(cos.(π * (0:N−1) / N)) создает косинусоидальное окно.
Генератор списков — более сложные конструкции с логикой. Например, [i < N/2 ? 1.0 : exp(−(i−N/2)^2 / (N/4)^2) for i in 1:N] создает окно с плоским центром и гауссовыми спадами на краях.
Вызов пользовательских функций — функция, определенная в рабочей области Engee, может быть вызвана из пользовательского кода.
Пользовательский код выполняется в текущей сессии Engee и имеет доступ ко всем ее переменным и функциям. Чтобы сессия оставалась переносимой, рекомендуется использовать только переменную N. Код сохраняется вместе с сессией в текстовом виде.
В поле можно воспользоваться вводом текста, чтобы ускорить поиск нужного значения среди большого количества вариантов.
Коэффициент формы, заданный как положительный вещественный скаляр. Параметр влияет на ослабление боковых лепестков преобразования Фурье окна.
Зависимости
Чтобы использовать этот параметр, установите для параметра Тип значение Кайзера.
#nbar —
количество боковых лепестков почти постоянного уровня
4 (по умолчанию) | скаляр
Details
Количество боковых лепестков почти постоянного уровня, примыкающих к главному лепестку, заданное как положительное целое число. Эти боковые лепестки считаются «почти постоянного уровня», поскольку в переходной области происходит некоторое затухание.
Зависимости
Чтобы использовать этот параметр, установите для параметра Тип значение Тейлора.
#sll —
максимальный уровень боковых лепестков относительно пика главного лепестка
−4 (по умолчанию) | скаляр
Details
Максимальный уровень боковых лепестков относительно пика главного лепестка, заданный как вещественный отрицательный скаляр в дБ. Он создает боковые лепестки с пиками на sll дБ ниже пика главного лепестка.
Зависимости
Чтобы использовать этот параметр, установите для параметра Тип значение Тейлора.
Косинусная дробь, заданная как вещественный скаляр. Окно Тьюки представляет собой прямоугольное окно, в котором первые и последние r/2 процента выборок равны долям косинуса. Например, при r = 0.5 получается окно Тьюки, в котором 1/2 всей длины окна состоит из сегментов сдвинутого по фазе косинуса с периодом 2r = 1. Если задать r ≤ 0, возвращается N-точечное прямоугольное окно. Если задать r ≥ 1, возвращается N-точечное окно Ханна.
Зависимости
Чтобы использовать этот параметр, установите для параметра Тип значение Тьюки.
#r —
затухание боковых лепестков
100 (по умолчанию) | скаляр
Details
Затухание боковых лепестков в дБ, заданное как положительное целое число. Окно Чебышева имеет амплитуду преобразования Фурье на r дБ ниже амплитуды главного лепестка.
Зависимости
Чтобы использовать этот параметр, установите для параметра Тип значение Чебышева.
Введите код на языке Julia для задания произвольной оконной функции. Вычисление введенного выражения должно возвращать вектор вещественных коэффициентов окна заданной длины. В выражении доступна предопределенная переменная , соответствующая текущему значению параметра Длина.
Зависимости
Чтобы использовать это поле, установите для параметра Тип значение Пользовательское.
Параметры анализа
#Количество точек —
количество точек БПФ
1024 (по умолчанию) | скаляр
Details
Количество точек БПФ, используемое для расчета частотной характеристики, заданное как целое число.
Минимальное допустимое значение: 2. Увеличение этого параметра сглаживает спектр, что позволяет более детально рассмотреть форму главного лепестка и боковых лепестков. Однако чрезмерное увеличение (например, более 4096) может замедлить пересчет графиков. Рекомендуемое значение: 1024–2048 для большинства практических задач.
#Диапазон —
интервал частот
Положительная половина [0, π) (по умолчанию) | Полный диапазон [0, 2π) | Симметричный [-π, π)
Details
Интервал частот, отображаемый на графике частотной области, заданный одним из следующих значений:
Положительная половина [0, π) — стандартный режим для анализа спектра вещественных сигналов, так как амплитудная характеристика симметрична; представляет собой диапазон от 0 до частоты Найквиста ( Гц или 0.5 нормированных единиц);
Полный диапазон [0, 2π) — полезен для наблюдения периодичности спектра, но обычно не используется для оценки параметров окна; представляет собой диапазон от 0 до (1.0 нормированных единиц);
Симметричный [-π, π) — дает наглядное представление о симметрии спектра относительно нулевой частоты; представляет собой диапазон от до (от −0.5 до 0.5 нормированных единиц).
Этот режим несовместим с логарифмической шкалой частоты; при попытке их совместного использования система выдаст ошибку.
#Отклик —
тип амплитудного отклика
Амплитуда, дБ (по умолчанию) | Амплитуда | Квадрат амплитуды | Нулевая фаза
Details
Тип амплитудного отклика, отображаемого на оси ординат частотного графика, заданный одним из следующих значений:
Амплитуда — линейная амплитуда (безразмерная), полезна для оценки абсолютных значений, но боковые лепестки малой амплитуды могут быть плохо видны;
Амплитуда, дБ — амплитуда в дБ , позволяет одновременно видеть как главный лепесток, так и боковые лепестки с большим динамическим диапазоном (до −100 дБ и ниже);
Квадрат амплитуды — отображает мощность спектра, используется в задачах оценки энергетического спектра;
Нулевая фаза — отображает амплитуду с учетом фазового сдвига, но для симметричных окон этот режим эквивалентен режиму Амплитуда.
#Шкала частоты —
тип масштабирования частотной оси
Линейная (по умолчанию) | Логарифмическая
Details
Тип масштабирования частотной оси, заданный одним из следующих значений:
Линейная — равномерная линейная шкала;
Логарифмическая — логарифмическая шкала, позволяет детально рассмотреть область низких частот, где часто сосредоточены боковые лепестки.
Этот тип несовместим с симметричным диапазоном; при попытке их совместного использования система выдаст ошибку.
#Единицы частоты —
единицы измерения частоты
Нормированные (по умолчанию) | Гц | кГц | МГц | ГГц
Details
Физический смысл оси абсцисс частотного графика, заданный одним из следующих значений:
Нормированные — частота выражается в долях от частоты Найквиста (от 0 до 0.5 для положительной половины);
Гц, кГц, МГц, ГГц — частота выражается в Гц или кратных единицах. При выборе этого варианта требуется указать значение параметра Частота дискретизации. Ширина главного лепестка и другие метрики, зависящие от частоты, будут пересчитаны в Гц.
#Частота дискретизации —
частота дискретизации
1 (по умолчанию) | скаляр
Details
Значение, используемое для пересчета нормированных частот в Гц и для расчета ширины главного лепестка в Гц, заданное как положительное конечное число.
Зависимости
Чтобы использовать этот параметр, установите для параметра Единицы частоты значение, отличное от Нормированные.
#Нормализовать амплитуду —
управление нормировкой амплитуды
Details
Установите этот флажок, чтобы привести максимальное значение амплитуды спектра к 1 в линейной шкале или к 0 дБ в логарифмической. Это полезно при сравнении окон с разной энергией, так как позволяет сосредоточиться на форме спектра, а не на абсолютных уровнях.
Примеры
Боковые лепестки окна Хэмминга
Details
Визуализируем боковые лепестки окна Хэмминга с длиной 64 отсчета.
В правом верхнем углу откроем меню Настройки отображения, снимем флажок Временная область и щелкнем по кнопке Параметры анализа:
В диалоговом окне укажем следующие параметры:
Установим для параметра Количество точек значение 8192.
Установим для параметра Единицы частоты значение Гц.
Установим для параметра Частота дискретизации значение 500.
Установим флажок Нормализовать амплитуду.
Нажмем кнопку Применить, чтобы закрыть диалоговое окно. На панели инструментов окна визуализации выберем опцию Масштабировать и выделим на графике область от 10 до 35 Гц, чтобы детально рассмотреть первые два боковых лепестка окна.
Окно Бомана
Details
Зададим окно Бомана длиной 128 и экспортируем его в рабочую область Engee.
Создадим окно Бомана, в секции Параметры:
Установим для параметра Тип значение Бомана.
Установим для параметра Длина значение 128.
Установим для параметра Имя значение bohwin.
Нажмем Применить.
В окне отображения характеристик обновятся графики во временной и частотной областях:
Нажмем кнопку Сохранение, расположенную в верхнем правом углу. В открывшемся окне нажмем кнопку Экспортировать:
Получим следующее сообщение:
Файл bohwin_function.jl со сгенерированным кодом можно найти в файловом браузере Engee. Его содержимое:
# Generated executable window function
# name: bohwin
# type: Бомана
import EngeeDSP
function bohwin_function()
N = 128
return EngeeDSP.Functions.bohmanwin(N)
end
На основе полученной функции построим графики в Engee. Подключим файл расчета окна.
include("bohwin_function.jl");
Запишем отсчеты окна в переменную wind и построим график во временной области.