exponenta event banner

Удаление низкочастотного шума в Simulink с помощью нормализованного адаптивного фильтра LMS

Адаптивные фильтры отслеживают динамический характер системы и позволяют исключить изменяющиеся во времени сигналы. Библиотеки Toolbox™ системы DSP содержат блоки, реализующие алгоритмы адаптивного фильтра наименьших квадратов (LMS), LMS блоков, LMS быстрых блоков и RLS рекурсивных наименьших квадратов (RLS). Эти фильтры минимизируют разницу между выходным сигналом и требуемым сигналом путем изменения их коэффициентов фильтра. Со временем выходной сигнал адаптивного фильтра более близок к сигналу, который требуется воспроизвести.

Проектирование адаптивного фильтра в Simulink

В этом примере создается адаптивный фильтр LMS для удаления низкочастотного шума в сигнале:

  1. Если модель, созданная в окне Добавить цифровой фильтр к модели (Add a Digital Filter to Your Model), не открыта на рабочем столе, можно открыть эквивалентную модель, введя

    в командной строке MATLAB ®.

  2. Откройте библиотеку системных инструментов DSP путем ввода dsplib в командной строке MATLAB.

  3. Удалите низкочастотный шум из сигнала, добавив в систему блок фильтра LMS. В самолетном сценарии это эквивалентно вычитанию шума ветра внутри кабины из входного сигнала в микрофон. Дважды щелкните библиотеку «Фильтрация», затем дважды щелкните библиотеку «Адаптивные фильтры». Добавьте в модель блок фильтра LMS.

  4. Задайте параметры блока фильтра LMS для моделирования выходных данных блока проектирования цифрового фильтра. Откройте диалоговое окно Фильтр LMS, дважды щелкнув блок. Задайте и примените параметры блока следующим образом:

    • Алгоритм = Normalized LMS

    • Длина фильтра = 32

    • Укажите размер шага через = Dialog

    • Размер шага (mu) = 0.1

    • Коэффициент утечки (от 0 до 1) = 1.0

    • Начальное значение веса фильтра = 0

    • Снимите флажок Adapt port.

    • Сброс порта = None

    • Установите флажок Выходные веса фильтра.

На основе этих параметров блок фильтра LMS вычисляет веса фильтра с использованием нормализованных уравнений LMS. Указанный порядок фильтров совпадает с порядком фильтров блока «Проектирование цифрового фильтра». Параметр Step size (mu) определяет гранулярность шагов обновления фильтра. Поскольку для параметра Коэффициент утечки (0 к 1) установлено значение 1.0текущие значения коэффициентов фильтра зависят от начальных условий фильтра и всех предыдущих входных значений. Начальное значение весов (коэффициентов) фильтра равно нулю. После установки флажка Выходные веса фильтра на блоке появится порт Wts. Блок выводит весовые коэффициенты фильтра из этого порта.

После установки параметров блока фильтра LMS этот блок можно включить в блок-схему.

Добавление адаптивного фильтра в модель

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

  1. Если модель, созданная при проектировании адаптивного фильтра в Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель путем ввода

    в командной строке MATLAB.

  2. Добавьте в модель блок суммы для вычитания выходного сигнала адаптивного фильтра из синусоидального сигнала с низкочастотным шумом. Из библиотеки математических операций Simulink ® перетащите блок суммы в модель. Откройте диалоговое окно «Сумма», дважды щелкнув этот блок. Измените значение параметра Список знаков на | + - и нажмите кнопку ОК.

  3. Включите в систему блок фильтра LMS.

    1. Подключите выход блока случайного источника к входному порту блока фильтра LMS. В сценарии самолета случайным шумом является белый шум, измеренный датчиком на внешней стороне самолета. Блок LMS Filter моделирует влияние фюзеляжа самолета на шум.

    2. Подключите выход блока проектирования цифрового фильтра к требуемому порту блока фильтра LMS. Это сигнал, который должен воспроизводиться блоком LMS.

    3. Подключите выход блока фильтра LMS к отрицательному порту блока Sum, добавленного на шаге 2.

    4. Подключите выход первого блока Sum к положительному порту второго блока Sum. Теперь модель должна выглядеть так же, как на следующем рисунке.

    Положительный вход второго блока Sum представляет собой сумму входного сигнала и низкочастотного шума s (n) + y. Отрицательный вход второго блока Sum представляет собой наилучшую оценку низкочастотного шума y 'блока фильтра LMS. При вычитании двух сигналов остается аппроксимация входного сигнала.

    s (n) приблизительно = s (n) + y − y '

    В этом уравнении:

    • s (n) - входной сигнал

    • s (n) приблизительно является аппроксимацией входного сигнала

    • y - шум, создаваемый блоком случайного источника и блоком проектирования цифрового фильтра;

    • y '- приближение шума блока фильтра LMS

    Поскольку блок фильтра LMS может аппроксимировать только шум, существует разница между входным сигналом и аппроксимацией входного сигнала. На последующих шагах можно настроить блок «Область», чтобы сравнить исходный синусоидальный сигнал с его аппроксимацией.

  4. Добавьте два дополнительных входа и оси в блок «Область». Откройте диалоговое окно «Область», дважды щелкнув на блоке «Область». Нажмите кнопку «Параметры». Для параметра «Количество осей» введите 4. Закройте диалоговое окно, нажав кнопку ОК.

  5. Пометьте новые оси области. В окне Область (Scope) щелкните правой кнопкой мыши по третьим осям и выберите Свойства осей (Axes properties). Откроется диалоговое окно Свойства области (Scope properties: axis 3). В поле «Заголовок» введите Approximation of Input Signal. Закройте диалоговое окно, нажав кнопку OK. Повторите эту процедуру для четвертых осей и пометьте ее Error.

  6. Подключите выход второго блока Sum к третьему порту блока Scope.

  7. Подключите выход порта Error в блоке фильтра LMS к четвертому порту блока Scope. Теперь модель должна выглядеть так же, как на следующем рисунке.

В этом примере выходной сигнал порта ошибки представляет собой разность между требуемым сигналом фильтра LMS и его выходным сигналом. Поскольку ошибка никогда не равна нулю, фильтр продолжает модифицировать коэффициенты фильтра, чтобы лучше аппроксимировать низкочастотный шум. Чем лучше аппроксимация, тем больше низкочастотного шума, который может быть удален из синусоидального сигнала. В следующем разделе «Просмотр коэффициентов адаптивного фильтра» показано, как просматривать коэффициенты адаптивного фильтра по мере их изменения со временем.

Просмотр коэффициентов адаптивного фильтра

Коэффициенты адаптивного фильтра изменяются со временем в соответствии с выбранным алгоритмом. Как только алгоритм оптимизирует характеристики фильтра, эти коэффициенты фильтра достигают своих установившихся значений. Можно просмотреть изменения коэффициентов во время выполнения моделирования, чтобы увидеть, как они соответствуют установившимся значениям. Затем можно определить возможность внедрения этих значений в фактическую систему:

  1. Если модель, созданная в разделе Добавление адаптивного фильтра к модели (Add a Adaptive Filter to Your Model), не открыта на рабочем столе, можно открыть эквивалентную модель, введя

    в командной строке MATLAB. Следует отметить, что порт Wts адаптивного фильтра, который выводит веса фильтра, все еще должен быть подключен.

  2. Откройте библиотеку системных инструментов DSP путем ввода dsplib в командной строке MATLAB.

  3. Просмотрите коэффициенты фильтра, подключив блок временной области к порту Wts блока фильтра LMS.

  4. В блоке «Временная область» измените следующие свойства конфигурации:

    • Интервал времени = 0.05

    • Y-пределы (минимум) = -0.15

    • Y-пределы (максимум) = 0.5

  5. Открыть параметры модели. На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings). На панели Решатель (Solver) задайте следующие параметры конфигурации:

    1. Время остановки = inf

    2. Тип = Fixed-step

    3. Решатель = discrete (no continuous states)

    Рекомендуется использовать эти параметры конфигурации для моделей, содержащих блоки панели системных инструментов DSP. Поскольку эти блоки вычисляют значения напрямую, а не решают дифференциальные уравнения, необходимо настроить Simulink Solver так, чтобы он вел себя как планировщик. Решатель, находясь в режиме планировщика, использует время выборки блока, чтобы определить, когда выполняется код за каждым блоком. Например, время выборки блоков синусоидальной волны и случайного источника в этой модели равно 0.05. Решатель выполняет код за этими блоками, и каждый другой блок с этим временем выборки, один раз в 0,05 секунды.

    Примечание

    При работе с моделями, содержащими блоки DSP System Toolbox, используйте исходные блоки, которые позволяют указать их время выборки. Если исходный блок не имеет параметра Sample time, необходимо добавить в модель блок Zero-Order Hold и использовать его для указания времени выборки. Дополнительные сведения см. в разделе Блоки источников непрерывного времени. Исключением из этого правила является блок Константа, который может иметь постоянное время выборки. При этом Simulink выполняет этот блок и записывает постоянное значение один раз в начале моделирования и при любой настройке параметра. Это обеспечивает более быстрое моделирование и более компактный генерируемый код.

  6. Запустите модель и просмотрите поведение коэффициентов фильтра во временной области, которая открывается автоматически при запуске моделирования. Со временем коэффициенты фильтра приближаются к их установившимся значениям.

    Можно также просмотреть поведение системы в окне Область (Scope). Со временем вы видите уменьшение погрешности и приближение входного сигнала более близко к исходному синусоидальному входному сигналу.

Создана модель, способная к адаптивному шумоподавлению.

Резюме

Вы научились конструировать фильтр нижних частот с помощью блока «Проектирование цифрового фильтра». Также было показано, как создать адаптивный фильтр с помощью блока «Фильтр LMS». Продукт DSP System Toolbox имеет другие блоки, способные проектировать и внедрять цифровые и адаптивные фильтры. Дополнительные сведения о возможностях фильтрации этого изделия см. в разделе Проектирование фильтров и анализ фильтров.

Поскольку все блоки в этой модели имеют одинаковое время выборки, эта модель является односкоростной, и Simulink запустил ее в SingleTasking режим решателя. Если блоки в модели имеют разное время выборки, модель является многоскоростной, и Simulink может запустить ее в MultiTasking режим решателя. Дополнительные сведения о режимах решателя см. в разделе Рекомендуемые настройки для моделирования дискретного времени.

Сведения о создании кода из модели с помощью продукта Simulink Coder™ см. в разделе Создание кода C из модели Simulink.

См. также

|

Связанные темы