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

Проектирование оконных функций

Проектирование оконных функций — это приложение Engee, предназначенное для расчета, визуализации, анализа и экспорта характеристик спектральных оконных функций во временной и частотной областях.

Чтобы открыть приложение, перейдите в рабочее пространство Engee и в разделе программной разработки слева выберите инструмент Командная строка img 41 1 2. В открывшемся окне введите команду:

engee.genie.start("WindowDesigner")

После выполнения команды щелкните по появившейся ссылке.

Открыть приложение можно и другим способом: в левом верхнем углу в разделе Приложения Engee apps icon выберите Проектирование оконных функций window designer icon.

Приложение будет функционировать с момента запуска до принудительной остановки или завершения работы среды Engee. Остановка приложения осуществляется с помощью команды:

engee.genie.stop("WindowDesigner")

Приложение работает в отдельной вкладке браузера и по умолчанию имеет следующий вид:

window designer 1

С помощью приложения можно:

  • Рассчитывать и анализировать характеристики в частотной и временных областях для параметрических и непараметрических оконных функций;

  • Визуализировать характеристики во временной и частотной области для одного или нескольких окон;

  • Импортировать и экспортировать конфигурацию (сессию) приложения;

  • Сохранять вычисленные коэффициенты окна в виде переменной рабочей области, отдельного файла (расширения CSV, TXT, JLD2, MAT) и исполняемого jl-файла.

Работа с приложением

Для работы с приложением используются четыре секции:

window designer 2

  • Панель инструментов (1) — секция для глобального управления текущей сессией: справа расположен блок управляющих элементов, обеспечивающих импорт ранее сохраненных сессий, экспорт рассчитанных коэффициентов в файлы различных форматов или сохранение сессии, вызов меню настроек отображения графиков, а также прямой переход к документации Engee. В левой части секции отображены название приложения и номер его текущей версии.

    В меню настроек отображения находятся три флажка: два из них влияют на отображение графиков в области визуализации, а третий — на отображение легенды на этих графиках. В этом меню также находятся параметры анализа, подробнее о них см. в разделе Параметры.

  • Область визуализации (2) — центральная секция, предназначенная для одновременного анализа характеристик выбранных оконных функций во временной и частотной областях, отображающихся на двух интерактивных графических окнах: «Временная область» и «Частотная область» соответственно.

    Под графическими полями располагаются числовые метрики качества, рассчитанные для текущих характеристик окна:

    • Фактор утечки — характеризует степень спектрального растекания и выражается в процентах доли энергии сигнала, приходящегося на боковые лепестки спектра окна;

    • Уровень боковых лепестков — характеризует максимальный уровень бокового лепестка относительно главного максимума амплитудно-частотной характеристики (АЧХ) и выражается в дБ;

    • Ширина главного лепестка по −3 дБ — характеризует ширину спектра оконной функции по уровню −3 дБ и выражается в единицах частоты или нормированных единицах частоты.

  • Список окон (3) — интерактивный менеджер созданных оконных функций. На панели можно найти окно по названию, добавить новое окно, скопировать или удалить существующее, а также выгрузить рассчитанные весовые коэффициенты в рабочую область Engee.

  • Параметры (4) — секция, в которой задаются значения параметров. Каждому параметру присвоено значение по умолчанию, которое можно изменить.

    В разделе Параметры представлены все доступные параметры приложения с пояснениями.

Параметры

Далее приводится обзор параметров приложения.

# Имя — название окна
window_1 (по умолчанию) | строка

Details

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

# Тип — тип окна
Хэмминга (по умолчанию) | С плоской вершиной | Бартлетта | Бартлетта-Хэннинга | Блэкмана | Блэкмана-Харриса | Бомана | Гаусса | Кайзера | Наттала | Парзена | Прямоугольное | Тейлора | Треугольное | Тьюки | Ханна (Хеннинга) | Чебышева | Пользовательское

Details

Выберите тип оконной функции:

  • С плоской вершиной — непараметрическое окно, коэффициенты которого вычисляются по формуле

    где , , , , (подробнее см. flattopwin);

  • Бартлетта — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. bartlett);

  • Бартлетта-Хэннинга — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. barthannwin);

  • Блэкмана — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. blackman);

  • Блэкмана-Харриса — непараметрическое окно, коэффициенты которого вычисляются по формуле

    где , , , (подробнее см. blackmanharris);

  • Бомана — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. bohmanwin);

  • Гаусса — параметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. gausswin);

  • Кайзера — параметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. kaiser);

  • Наттала — непараметрическое окно, коэффициенты которого вычисляются по формуле

    где , , , (подробнее см. nuttallwin);

  • Парзена — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. parzenwin);

  • Прямоугольное — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. rectwin);

  • Тейлора — параметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. taylorwin);

  • Треугольное — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. triang);

  • Тьюки — параметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. tukeywin);

  • Ханна (Хеннинга) — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. hann);

  • Хэмминга (по умолчанию) — непараметрическое окно, коэффициенты которого вычисляются по формуле

    (подробнее см. hamming);

  • Чебышева — параметрическое окно, коэффициенты которого вычисляются по формуле

    где (подробнее см. chebwin);

  • Пользовательское — позволяет задать произвольную оконную функцию посредством написания кода на языке 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. Код сохраняется вместе с сессией в текстовом виде.

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

# Длина — длина окна
64 (по умолчанию) | скаляр

Details

Дискретная длина оконной функции в отсчетах, заданная как целое положительное число.

# α — коэффициент ширины
2.5 (по умолчанию) | скаляр

Details

Коэффициент ширины, заданный как положительный вещественный скаляр. Параметр обратно пропорционален ширине окна.

Зависимости

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

# β — формфактор
0.5 (по умолчанию) | скаляр

Details

Коэффициент формы, заданный как положительный вещественный скаляр. Параметр влияет на ослабление боковых лепестков преобразования Фурье окна.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип значение Кайзера.

# nbar — количество боковых лепестков почти постоянного уровня
4 (по умолчанию) | скаляр

Details

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

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип значение Тейлора.

# sll — максимальный уровень боковых лепестков относительно пика главного лепестка
−4 (по умолчанию) | скаляр

Details

Максимальный уровень боковых лепестков относительно пика главного лепестка, заданный как вещественный отрицательный скаляр в дБ. Он создает боковые лепестки с пиками на sll дБ ниже пика главного лепестка.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип значение Тейлора.

# r — косинусная дробь
0.5 (по умолчанию) | скаляр

Details

Косинусная дробь, заданная как вещественный скаляр. Окно Тьюки представляет собой прямоугольное окно, в котором первые и последние r/2 процента выборок равны долям косинуса. Например, при r = 0.5 получается окно Тьюки, в котором 1/2 всей длины окна состоит из сегментов сдвинутого по фазе косинуса с периодом 2r = 1. Если задать r ≤ 0, возвращается N-точечное прямоугольное окно. Если задать r ≥ 1, возвращается N-точечное окно Ханна.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип значение Тьюки.

# r — затухание боковых лепестков
100 (по умолчанию) | скаляр

Details

Затухание боковых лепестков в дБ, заданное как положительное целое число. Окно Чебышева имеет амплитуду преобразования Фурье на r дБ ниже амплитуды главного лепестка.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип значение Чебышева.

# EngeeCode — текстовое поле

Details

Введите код на языке 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 отсчета.

  1. В правом верхнем углу откроем меню Настройки отображения, снимем флажок Временная область и щелкнем по кнопке Параметры анализа:

    window designer 15

  2. В диалоговом окне укажем следующие параметры:

    • Установим для параметра Количество точек значение 8192.

    • Установим для параметра Единицы частоты значение Гц.

    • Установим для параметра Частота дискретизации значение 500.

    • Установим флажок Нормализовать амплитуду.

    window designer 16

  3. Нажмем кнопку Применить, чтобы закрыть диалоговое окно. На панели инструментов окна визуализации выберем опцию Масштабировать и выделим на графике область от 10 до 35 Гц, чтобы детально рассмотреть первые два боковых лепестка окна.

    window designer 17

Окно Бомана

Details

Зададим окно Бомана длиной 128 и экспортируем его в рабочую область Engee.

  1. Создадим окно Бомана, в секции Параметры:

    • Установим для параметра Тип значение Бомана.

    • Установим для параметра Длина значение 128.

    • Установим для параметра Имя значение bohwin.

  2. Нажмем Применить.

    window designer 3

    В окне отображения характеристик обновятся графики во временной и частотной областях:

    window designer 4

  3. Нажмем кнопку Сохранение window designer 5, расположенную в верхнем правом углу. В открывшемся окне нажмем кнопку Экспортировать:

    window designer 6

    Получим следующее сообщение:

    window designer 7

  4. Файл 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 и построим график во временной области.

wind = bohwin_function()

plot(wind, xlab = "Отсчеты", ylab = "Амплитуда", title = "Окно Бомана", lab="")

window designer 8

Рассчитаем и построим двухсторонний спектр.

len_fft = 1024
spec_wind = EngeeDSP.Functions.fft(wind, len_fft) # расчет спектра

f_grid = (0:(len_fft-1)) ./ len_fft
plot(f_grid, 10log10.(abs.(spec_wind)), xlab = "Нормированная частота",
     ylab = "Амплитуда", title="Двухсторонний спектр", lab="")

window designer 9

А также односторонний спектр.

len_fft_2 = 512
plot(f_grid[1:len_fft_2], 10log10.(abs.(spec_wind[1:len_fft_2])),
     xlab = "Нормированная частота", ylab = "Амплитуда",
     title = "Односторонний спектр", lab="")

window designer 10

Окна Кайзера

Details

Исследуем поведение окна Кайзера, зависящего от длины и формфактора .

  1. Создадим окно Кайзера, в секции Параметры:

    • Установим для параметра Тип значение Кайзера.

    • Установим для параметра Длина значение 20.

    • Установим для параметра β значение 0.0.

    • Установим для параметра Имя значение kaiser0.

  2. Нажмем Применить. В окне отображения характеристик обновятся графики во временной и частотной областях:

    window designer 8

  3. В секции Список окон нажмем кнопку Добавить окно:

    window designer 9

    Аналогично создадим окно Кайзера длиной 20 с параметром . Назовем окно kaiser3 и нажмем Применить. Получим:

    window designer 10

  4. В секции Список окон нажмем Дублировать выбранное окно (или Дублировать):

    window designer 11

    чтобы создать третье окно Кайзера kaiser6 с параметром . Нажмем Применить.

    window designer 12

  5. В секции Список окон выберите три окна, тогда все графики отобразятся в секции Отображение характеристик во временной и частотной области:

    window designer 13

  6. Изменим значения параметров для каждого окна:

    • Выберем kaiser0 и установим для параметра Длина значение 10, а для β — 6.0. Нажмем Применить.

    • Выберем kaiser3 и установим для параметра β значение 6.0. Нажмем Применить.

    • Выберем kaiser6 и установим для параметра Длина значение 40. Нажмем Применить.

    window designer 14