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

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

Создайте адаптивный фильтр в Simulink

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

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

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

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

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

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

    • Algorithm = Normalized LMS

    • Filter length = 32

    • Specify step size via = Dialog

    • Step size (mu) = 0.1

    • Leakage factor (0 to 1) = 1.0

    • Initial value of filter weights = 0

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

    • Reset port = None

    • Установите флажок Output filter weights.

На основе этих параметров блок LMS Filter вычисляет веса фильтров, используя нормализованные уравнения LMS. Заданный порядок фильтра совпадает с порядком фильтра блока Создание Цифровых Фильтров. Параметр Step size (mu) определяет гранулярность шагов обновления фильтра. Потому что вы устанавливаете параметр Leakage factor (0 to 1) равным 1.0значения коэффициентов текущего фильтра зависят от начальных условий фильтра и всех предыдущих входных значений. Начальное значение весов фильтра (коэффициентов) равняется нулю. Поскольку вы установили флажок Output filter weights, на блоке появится Wts порт. Блок выводит веса фильтров из этого порта.

Теперь, когда вы установили параметры блоков блока LMS Filter, можно включить этот блок в свою блок-схему.

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

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

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

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

  2. Добавьте блок Sum к вашей модели, чтобы вычесть выход адаптивного фильтра из синусоидального сигнала с низкочастотным шумом. Из Simulink® Библиотеку Математические операции, перетащите блок Sum в модель. Откройте диалоговое окно Сумма, дважды кликнув этот блок. Измените параметр List of signs на |+ - и затем нажмите OK.

  3. Включите блок LMS Filter в свою систему.

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

    2. Подключите выход блока Создание Цифровых Фильтров к порту Desired блока LMS Filter. Это сигнал, который вы хотите воспроизвести в блоке LMS.

    3. Соедините выход блока LMS Filter с отрицательным портом блока Sum, добавленного на шаге 2.

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

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

    s(n)approx=s(n)+yy'

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

    • s (n) является входным сигналом

    • s(n)approx - приближение входного сигнала

    • y - шум, создаваемый блоком Random Source и блоком Digital Filter Design

    • y '- приближение шумов блоком LMS Filter

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

  4. Добавьте два дополнительных входа и оси к блоку Scope. Откройте диалоговое окно Scope, дважды кликнув по блоку Scope. Нажмите кнопку Parameters. Для параметра Number of axes введите 4. Закройте диалоговое окно нажатием кнопки OK.

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

  6. Соедините выход второго блока Sum с третьим портом блока Scope.

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

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

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

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

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

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

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

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

  4. На блоке Time Scope измените следующие свойства строения:

    • Time span = 0.05

    • Y-limits (Minimum) = -0.15

    • Y-limits (Maximum) = 0.5

  5. Откройте настройки модели. На вкладке Modeling нажмите Model Settings. На панели Solver установите следующие параметры конфигурации:

    1. Stop time = inf

    2. Type = Fixed-step

    3. Solver = discrete (no continuous states)

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

    Примечание

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

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

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

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

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

Вы научились проектировать lowpass с помощью блока Digital Filter Design. Вы также научились создавать адаптивный фильтр с помощью блока LMS Filter. Продукт DSP System Toolbox имеет другие блоки, способные разрабатывать и реализовывать цифровые и адаптивные фильтры. Для получения дополнительной информации о возможностях фильтрации этого продукта смотрите Создание фильтра и Анализ фильтров.

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

Чтобы узнать, как сгенерировать код из вашей модели с помощью продукта Simulink Coder™, смотрите Генерация кода С из модели Simulink.

См. также

|

Похожие темы