Адаптивные фильтры являются фильтрами, коэффициенты или веса которых изменяются с течением времени, чтобы адаптироваться к статистике сигнала. Они используются в различных областях, включая связь, управление, радиолокацию, гидролокатор, сейсмологию и биомедицинскую инженерию.
В этой теме вы узнаете, как создать акустическое окружение, которая симулирует как белый шум, так и цветной шум, добавленный к входному сигналу. Вы позже используете это окружение для создания модели, способной к адаптивному шумоподавлению с помощью адаптивной фильтрации:
В MATLAB® в командной строке введите dspanc
.
Откроется пример DSP System Toolbox™ Acoustic Noise Cancellation.
Скопируйте и вставьте подсистему под названием Acoustic Environment в новую модель.
Дважды кликните Подсистему акустического окружения.
Гауссов шум используется, чтобы создать сигнал, отправленный на внешний выходной порт Mic. Если вход в порт Filter изменяется от 0 до 1, блок Цифровой фильтр переходит от lowpass к полосно-пропускающему фильтру. Отфильтрованный шум, выводимый из блока Цифровой фильтр, добавляется к сигналу, поступающему от .wav
файл для формирования сигнала, отправленного на выходной порт Mic пилот-сигнала.
Теперь вы создали акустическое окружение. В следующих темах вы используете это акустическое окружение для создания модели, способной к адаптивному шумоподавлению.
В предыдущей теме «Создание акустического окружения в Simulink» вы создали систему, которая выдала два выходных сигнала. Выходной сигнал в внешнем порту Mic состоит из белого шума. Выходной сигнал в порту Mic пилота состоит из цветного шума, добавленного к сигналу от .wav
файл. В этой теме вы создаете адаптивный фильтр, чтобы удалить шум от сигнала Mic пилота. Этот раздел предполагает, что вы работаете с Windows® операционная система:
Если модель, созданная вами в Create a Acoustic Environment in Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя
в командной строке MATLAB.
Из библиотеки DSP System Toolbox Filtering, а затем из библиотеки Adaptive Filters щелкните - и перетащите блок LMS Filter в модель, содержащую подсистему Acoustic Environment.
Дважды кликните блок LMS Filter. Установите параметры блоков следующим образом и нажмите OK:
Algorithm = Normalized LMS
Filter length = 40
Step size (mu) = 0.002
Leakage factor (0 to 1) = 1
Блок использует нормированный LMS-алгоритм, чтобы вычислить коэффициенты сорока фильтров. Установка параметра Leakage factor (0 to 1) равной 1
означает, что значения коэффициентов текущего фильтра зависят от начальных условий фильтра и всех предыдущих входных значений.
Щелкните-и-перетащите следующие блоки в модель.
Блок | Библиотека | Количество |
---|---|---|
Постоянный | Simulink®/ Источники | 2 |
Ручной переключатель | Simulink/Маршрутизация сигнала | 1 |
Терминатор | Simulink/Раковины | 1 |
Субдискретизировать | Сигнальные операции | 1 |
Устройство записи аудио средств записи | Сливы | 1 |
Возможности водопада | Сливы | 1 |
Соедините блоки так, чтобы ваша модель напоминала следующий рисунок.
Дважды кликните блок Константа (Constant). Установите параметр Constant value равным 0
а затем нажмите OK.
Дважды кликните блок Downsample. Установите параметр Downsample factor, K равным 32
. Нажмите OK.
Веса фильтров обновляются настолько часто, что происходит очень мало изменений от одного обновления к следующему. Чтобы увидеть более заметное изменение, нужно понизить значение выхода от порта Wts.
Дважды кликните блок Waterfall Scope. Откроются Waterfall возможности.
Нажмите кнопку Scope параметров.
Откроется Parameters окно.
Перейдите на вкладку Axes. Установите параметры следующим образом:
Y Min = -0.188
Y Max = 0.179
Перейдите на вкладку Data history. Установите параметры следующим образом:
History traces = 50
Data logging = All visible
Закройте Parameters окно, оставив все остальные параметры на своих значениях по умолчанию.
Для просмотра графиков может потребоваться настроить оси в Waterfall возможностей окне порядка.
Нажмите кнопку Fit to view в окне Waterfall возможности. Затем щелкните и перетащите оси до тех пор, пока они не будут напоминать следующие рисунки.
На вкладке Modeling нажмите Model Settings. На панели Solver установите параметры следующим образом и нажмите OK:
Stop time = inf
Type = Fixed-step
Solver = Discrete (no continuous states)
Запустите симуляцию и просмотрите результаты в окне Waterfall возможности. Слушать симуляцию можно также с помощью динамиков, подключенных к компьютеру.
Экспериментируйте с изменением параметра Manual Switch так, чтобы вход в подсистему Acoustic Environment составлял 0 или 1.
Когда значение 0, Гауссов шум в сигнале фильтруется lowpass. Когда значение равно 1, шум фильтруется полосно-пропускающим фильтром. Адаптивный фильтр может удалить шум в обоих случаях.
Теперь вы создали модель, способную к адаптивному шумоподавлению. Адаптивный фильтр в вашей модели способен отфильтровать и шум низкой частоты, и шум в частотной области значений. В следующей теме, «Изменение параметров адаптивного фильтра во время симуляции модели», вы изменяете блок LMS Filter и изменяете его параметры во время симуляции.
В предыдущей теме, LMS Filter Configuration for Adaptive Noise Cancellation, вы создали адаптивный фильтр и использовали его, чтобы удалить шум, генерируемый подсистемой Acoustic Environment. В этой теме вы изменяете адаптивный фильтр и корректируете его параметры во время симуляции. Эта тема предполагает, что вы работаете с операционной системой Windows:
Если модель, созданная вами в Create a Acoustic Environment in Simulink, не открыта на рабочем столе, можно открыть эквивалентную модель, введя
ex_adapt2_audio
в командной строке MATLAB.
Дважды кликните блок фильтра LMS. Установите параметры блоков следующим образом и нажмите OK:
Specify step size via = Input port
Initial value of filter weights = 0
Установите флажок Adapt port.
Reset port = Non-zero sample
Теперь диалоговое окно Block Parameters: LMS Filter должно выглядеть аналогично следующему рисунку.
Порты Step-size, Adapt и Reset появляются на блоке LMS Filter.
Щелкните-и-перетащите следующие блоки в модель.
Блок | Библиотека | Количество |
---|---|---|
Постоянный | Simulink/Источники | 6 |
Ручной переключатель | Simulink/Маршрутизация сигнала | 3 |
Соедините блоки как показано на следующем рисунке.
Дважды кликните Constant2 блок. Установите параметры блоков следующим образом и нажмите OK:
Constant value = 0.002
Установите флажок Interpret vector parameters as 1-D.
Sample time (-1 for inherited) = inf
Output data type mode = Inherit via back propagation
Дважды кликните Constant3 блок. Установите параметры блоков следующим образом и нажмите OK:
Constant value = 0.04
Установите флажок Interpret vector parameters as 1-D.
Sample time (-1 for inherited) = inf
Output data type mode = Inherit via back propagation
Дважды кликните Constant4 блок. Установите параметр Constant value равным 0
а затем нажмите OK.
Дважды кликните Constant6 блок. Установите параметр Constant value равным 0
а затем нажмите OK.
На вкладке Debug выберите Information Overlays > Nonscalar Signals и Signal Dimensions.
Дважды кликните Manual Switch2 так, чтобы вход в порт Adapt равнялся 1.
Запустите симуляцию и просмотрите результаты в окне Waterfall возможности. Слушать симуляцию можно также с помощью динамиков, подключенных к компьютеру.
Дважды кликните блок Manual Switch так, чтобы вход в подсистему Acoustic Environment равнялся 1. Затем дважды кликните Manual Switch2 так, чтобы вход в порт Adapt to 0.
Веса фильтров, отображаемые в окне Waterfall возможности, остаются постоянными. Когда вход порта Adapt равен 0, веса фильтров не обновляются.
Дважды кликните Manual Switch2 так, чтобы вход в порт Adapt равнялся 1.
Блок LMS Filter обновляет коэффициенты.
Соедините блок Manual Switch1 с блоком Constant, который представляет собой 0,002. Затем измените вход на подсистему Acoustic Environment. Повторите эту процедуру с блоком Constant, который представляет 0,04.
Можно увидеть, что система достигает устойчивого состояния быстрее, когда размер шага больше.
Дважды кликните блок Manual Switch3 так, чтобы вход в порт Reset равнялся 1.
Блок сбрасывает веса фильтров до их начальных значений. В Block Parameters: LMS Filter окне из списка Reset port вы выбрали Non-zero sample
. Это означает, что любой ненулевой вход порта Reset запускает операцию сброса.
Теперь вы экспериментировали с адаптивным шумоподавлением с помощью блока LMS Filter. Вы скорректировали параметры вашего адаптивного фильтра и просмотрели эффекты ваших изменений во время работы модели.
Для получения дополнительной информации об адаптивных фильтрах см. следующие страницы с описанием на блоки:
[1] Hayes, Monson H., Statistical Digital Signal Processing and Modeling. Hoboken, NJ: John Wiley & Sons, 1996, pp.493-552.
[2] Haykin, Simon, Adaptive Filter Theory. Upper Saddle River, NJ: Prentice-Hall, Inc., 1996.