Этот пример берет перспективу разработчика MATLAB, готового создать мгновенное средство оценки частоты на основе Дискретного энергетического Разделительного Алгоритма. Это также вводит Системные объекты создания для пользовательских алгоритмов ЦОС.
Дискретные энергетические Разделительные Алгоритмы (или DESA) обеспечивают мгновенные оценки амплитуды и частоты для синусоидальных сигналов. Основа DESA является нелинейным Энергетическим оператором Teager-кайзера (TKEO)
В частности, алгоритм DESA-2 обеспечивает мгновенные оценки для амплитуды (или функция AM) и частота (или функция FM) посредством следующих выражений
Чтобы запуститься, запустите пример конечного результата - простая системная симуляция с помощью недавно разработанного средства оценки частоты DESA-2 (dspdemo. DesaTwo) в простом испытательном стенде. Испытательный стенд включает модулируемый FM тональный генератор (dspdemo. RandomFMToneGenerator), два осциллографа для визуализации сигнала и способности настроить много системных параметров в процессе моделирования. В частности можно экспериментировать с изменением трех параметров, которые влияют на изменение частоты модулируемого FM тонального тестового воздействия, т.е.
Частота возмещена
Стандартное отклонение частоты
Пропускная способность случайных изменений частоты, идентифицированных как Энергозависимость Частоты, если коротко,
Генератор сигнала и средство оценки частоты оба реализованы как пользовательские Системные объекты. Можно смотреть скрипт HelperDesa2Sysobj симуляции и идентифицировать эти три основных задачи
Определение начальных значений параметров
Создание всех объектов используется в симуляции
Выполнение фактического цикла симуляции
Симулированная система могла быть представлена графически можно следующим образом
Схема выше помогает изучить, как различные алгоритмические компоненты работают совместно в системной симуляции. Это также помогает визуализировать, как различные фрагменты системы группируются и используются. В частности, все оранжевые блоки представляют Системные объекты, доступные в DSP System Toolbox, в то время как все голубые блоки представляют пользовательские созданные MATLAB Системные объекты, разработанные для этого примера.
На высоком уровне симуляция использует два экземпляра следующих пользовательских Системных объектов, оба созданные в MATLAB
dspdemo. RandomFMToneGenerator, чтобы сгенерировать тестовый сигнал
dspdemo. DesaTwo, чтобы оценить частоту тестового сигнала
В dspdemo. DesaTwo, заметьте, например, присутствие двух экземпляров dspdemo. TeagerKaiserOperator, один для и другой для
dspdemo.RandomFMToneGenerator
RandomFMToneGenerator состоит из двух других классов внутренне. Каждый - dsp. NCO, объект встроенной системы и другой являются dspdemo. BandlimitedNoiseGenerator, другой пользовательский Системный объект.
Если вы знакомы с UML, следующая схема дает более подробный обзор архитектуры dspdemo. RandomFMToneGenerator:
Осмотр кода dspdemo. RandomFMToneGenerator помогает далее разъяснить, как его компоненты низшего уровня работают совместно.
stepImpl метод в конкретных реализациях базовая функциональность общедоступного шага () метод. Здесь разделение ответственности и сокрытие внутренней сложности в других классах помогают упростить код. Отметьте, как stepImpl вызывает в свою очередь шаг () методы двух других Системных объектов
Оператор оценки частоты DESA-2 (dspdemo. DesaTwo), снова реализован как пользовательский Системный объект. На этот раз, хотя его метод шага принимает буфер выборок, как введено, и он возвращает локальные оценки тональной амплитуды и частоты. При сравнении уравнений для оператора с одной стороны и диаграммы классов на другом, заметьте, как оператор DESA-2 состоит из двух энергетических операторов Teager-кайзера типа TeagerKeiserEnergyOperator, как ранее ожидается путем визуального осмотра схемы уровня системы.
dspdemo.BandlimitedNoiseGenerator
Упаковочные субкомпоненты как отдельные Системные объекты также помогают с многократным использованием и тестированием.
Например, ключевой компонент dspdemo. RandomFMToneGenerator является dspdemo. BandlimitedNoiseGenerator. dspdemo. BandlimitedNoiseGenerator генерирует нулевой средний случайный сигнал с предписанной пропускной способностью и амплитудой RMS, и это используется здесь, чтобы задать изменения частоты тестового сигнала вокруг его значения смещения.
Так же к основному dspdemo. Объект DesaTwo, dspdemo. BandlimitedNoiseGenerator может использоваться в изоляции путем создания экземпляра, установки его параметров и вызова его метода шага в цикле симуляции. Скрипт симуляции в качестве примера является (запущенным) HelperDesa2SysobjTestBLNG.
Для получения дополнительной информации об объектах авторской системы для ваших пользовательских алгоритмов см. Создание системных объектов
П. Марагос, Дж.Ф. Кэйсер, Т.Ф. Куартьери, энергетическое Разделение в Модуляциях Сигнала с Приложением к Речевому Анализу, Транзакциям IEEE на Обработке сигналов, издании 41, № 10, октябрь 1993