Многоядерная симуляция акустического формирования луча с использованием микрофонного массива

Этот пример показывает, как сформировать луч сигналов, принимаемых массивом микрофонов, для извлечения желаемого речевого сигнала в зашумленном окружении. Он использует область dataflow в Simulink ®, чтобы разбить управляемые данными фрагменты системы на несколько потоков и тем самым улучшить эффективность симуляции путем ее выполнения на нескольких ядрах вашего рабочего стола.

Введение

Модель имитирует прием трех аудиосигналов из разных направлений на 10-элементном равномерно линейном массиве (ULA). После сложения теплового шума в приемнике прикладывается формирования луча и воспроизводится результат на звуковом устройстве.

Симуляция полученного аудио

Подсистема Audio Source считывается с аудио файлов и определяет направление для каждого аудио источника. Блок Wideband Rx Array моделирует прием аудиосигналов в ULA. Первый вход в блок Wideband Rx Array является матрицей 1000x3, где три столбца ввода соответствуют трем источникам звука. Второй вход (Ang) задает направление падения сигналов. Первая строка Ang задает угол азимута в степенях для каждого сигнала, а вторая строка задает угол возвышения в степенях для каждого сигнала. Выходные выходы этого блока - матрица 1000x10. Каждый столбец выхода соответствует звуку, записанному в каждом элементе массива. Строение массива микрофонов задается на вкладке Sensor Array диалоговой панели блоков. Блок Receiver Preamp добавляет белый шум к принятым сигналам.

Beamforming

Существует три блока Frost Beamformer, которые выполняют формирование луча на матрице, проходящей через входной порт X по направлению, заданному входным портом Ang. Каждый из трех формирователей луча направляет свой луч к одному из трех источников. Выход устройства формирования луча воспроизводится в блоке Аудио Устройство Writer. Различные источники можно выбрать с помощью блока Select Source.

Улучшите эффективность симуляции с помощью многопоточности

Этот пример может использовать область dataflow в Simulink, чтобы автоматически разделить управляемые данными фрагменты системы на несколько потоков и тем самым улучшить эффективность симуляции путем ее выполнения на нескольких ядрах вашего рабочего стола. Чтобы узнать больше о dataflow и о том, как запустить модели Simulink с использованием нескольких потоков, смотрите Многоядерное Выполнение с использованием Область.

Настройка подсистемы Dataflow

В Simulink вы задаете dataflow в качестве области выполнения для подсистемы путем установки параметра Domain на Dataflow с помощью Property Inspector. Области Dataflow автоматически разделяют вашу модель и моделируют систему с помощью нескольких потоков для повышения эффективности симуляции. Если вы установите параметр Domain на Dataflow, можно использовать Dataflow Simulation Assistant, чтобы проанализировать модель, чтобы получить лучшую эффективность. Можно открыть Dataflow Simulation Assistant, нажав на кнопку Dataflow assistant под параметром Автоматическое вычисление формата кадра в Property Inspector.

Анализ параллелизма в подсистеме Dataflow

Помощник по симуляции Dataflow предлагает изменение настроек модели для оптимальной эффективности симуляции. Чтобы принять предложенные настройки модели, рядом с параметрами Предлагаемой модели для эффективности симуляции, нажмите Принять все. Также можно развернуть раздел, чтобы изменить настройки по отдельности. В этом примере настройки модели уже оптимальны. В Dataflow Simulation Assistant нажмите кнопку Analyze, чтобы начать анализ области dataflow для эффективности симуляции. После завершения анализа помощник по симуляции Dataflow показывает, сколько потоков будет использовать подсистема dataflow во время симуляции.

Для этой модели помощник показывает три потока, потому что три блока Frost Beamformer являются вычислительно интенсивными, и они могут работать параллельно. Однако три блока Frost Beamformer зависят от блоков Microphone Array и Receiver, чтобы закончить, прежде чем они начнут выполнение. Параллелизм может быть увеличен для этой модели путем использования задержек трубопровода между блоками beamformer и блоками симуляции источника. Помощник по симуляции Dataflow показывает рекомендуемое количество задержек трубопровода как предполагаемую задержку. Для этой модели предлагаемая задержка едина. Чтобы использовать рекомендуемую задержку для подсистемы Dataflow, нажмите кнопку «Принять» рядом с полем «Предлагаемая задержка» в ассистенте симуляции Dataflow.

Многоядерная Эффективность симуляции

Чтобы измерить улучшение эффективности, полученное при помощи dataflow, сравните время выполнения модели с и без dataflow. Аудио устройство Writer работает в реальном времени и ограничивает скорость симуляции модели реальным временем. Закомментируйте блок Аудио Устройство Writer при измерении времени выполнения. На рабочем компьютере Windows с процессором Intel ® Xeon ® CPU W-2133 @ 3,6 ГГц 6 ядер 12 Threads эта модель с использованием области dataflow выполняется в 1,8 раза быстрее по сравнению с исходной моделью.

Сводные данные

Этот пример показал, как сформировать луч сигналов, принимаемых массивом микрофонов, для извлечения желаемого речевого сигнала в зашумленном окружении. Это также показывает, как использовать область dataflow, чтобы автоматически разделить управляемую данными часть модели на параллельное выполнение потока и запустить модель с помощью нескольких потоков.