Вычислите выход, ошибку и веса, используя адаптивный алгоритм LMS
DSP System Toolbox/Фильтрация/Адаптивные фильтры
Поддержка/фильтрация HDL-файлов DSP System Toolbox
Блок LMS Filter может реализовать адаптивный конечная импульсная характеристика с помощью пяти различных алгоритмов. Блок оценивает веса фильтра или коэффициенты, необходимые для минимизации ошибки, e(n), между выходным сигналом y(n) и желаемым сигналом, d(n). Выходом является отфильтрованный входной сигнал, который является оценкой необходимого сигнала. Порт Ошибки выводит результат вычитания сигнала выхода из необходимого сигнала.
При определенных условиях этот блок также поддерживает генерацию кода SIMD. Для получения дополнительной информации смотрите Генерация кода.
Input
- Входной сигналСоедините сигнал, который вы хотите фильтровать, в виде скаляра или вектора-столбца.
Когда вход является фиксированной точкой, он должен быть подписан.
Типы данных: single
| double
| fixed point
Desired
- Желаемый сигналСоедините требуемый сигнал, заданный как вектор или матрица. Желаемый сигнал должен иметь совпадающий тип данных, сложность и размерности, что и Input
сигнал.
Когда Input является фиксированной точкой, желаемый сигнал должен быть подписанным фиксированной точкой.
Типы данных: single
| double
| fixed point
Step-size
- Размер шагаВведите μ размера шага. Для сходимости нормализованных уравнений LMS 0 < µ < 2. Входной тип должен совпадать с типом Input
порт.
Когда Input является фиксированной точкой, размер шага должен быть подписанным фиксированной точкой.
Этот порт появляется только при установке Specify step size via
параметр в Input port
.
Типы данных: single
| double
| fixed point
Adapt
- Обновление весов фильтраКогда вход к этому порту больше нуля, блок постоянно обновляет веса фильтра. Когда вход этого порта меньше или равен нулю, веса фильтров остаются на своих текущих значениях.
Этот порт появляется только при установке Adapt port
параметр в on
.
Типы данных: single
| double
| int8
| int16
| int32
| Boolean
Reset
- Сброс весов фильтраСигнал на сброс значения весов фильтра до их начальных значений, заданных как вектор. Блок сбрасывает веса фильтра всякий раз, когда событие сброса обнаруживается в порту сброса. Скорость сигнала сброса должна быть такой же скоростью, как и входной сигнал данных.
Для сброса типов событий смотрите Reset
параметр.
Этот порт появляется только, когда вы устанавливаете параметр Reset port на Rising edge
, Falling edge
, Either edge
, или Non-zero sample
.
Типы данных: single
| double
| int8
| int16
| int32
| Boolean
Output
- Выходной сигналВыводит отфильтрованный входной сигнал, который является оценкой необходимого сигнала. Это тот же размер и сложность, что и входной сигнал.
Сигнал выхода имеет совпадающий тип данных в качестве необходимого сигнала.
Типы данных: single
| double
| fixed point
Error
- Ошибка между выходным и желательным сигналамиВыводит результат вычитания сигнала выхода из необходимого сигнала.
Сигнал ошибки имеет совпадающий тип данных что и требуемый сигнал.
Типы данных: single
| double
| fixed point
Wts
- Обновленные веса фильтровДля каждой итерации блок выводит текущие обновленные веса фильтров из этого порта.
Тип данных весов должен совпадать с типом Input
порт для сигналов с плавающей точкой. Подчиняется Weights
параметр для сигналов с фиксированной точкой.
Этот порт появляется только при установке Output filter weights
параметр в On
.
Типы данных: single
| double
| fixed point
Algorithm
- Выбор алгоритмаLMS
(по умолчанию) | Normalized LMS
| Sign-Error LMS
| Sign-Data LMS
| Sign-Sign LMS
Выберите алгоритм, используемый для вычисления весов фильтра.
Filter length
- Длина фильтра32
(по умолчанию) | скаляромВведите длину вектора весов конечных импульсных характеристик.
Specify step size via
- Задайте размер шага черезDialog
(по умолчанию) | Input port
Dialog
-- Задайте размер шага с помощью параметра Step size (mu).
Input port
-- Задайте размер шага при помощи Step-size
порт.
Step size (mu)
- Размер шага0.1
(по умолчанию) | положительная скалярная величинаВведите μ размера шага. Для сходимости нормализованных уравнений LMS 0 < µ < 2.
Настраиваемый: Да
Этот параметр появляется только, когда вы устанавливаете Specify step size via
параметр в Dialog
.
Leakage factor (0 to 1)
- Коэффициент утечки1.0
(по умолчанию) | скаляромВведите коэффициент утечки 0 < 1 - мкα ≤ 1.
Настраиваемый: Да
Initial value of filter weights
- Начальное значение весов фильтра0
(по умолчанию) | вектор | скалярВведите начальные веса фильтра w (0) в виде вектора или скаляра. Когда вы вводите скаляр, блок использует скалярное значение, чтобы создать вектор весов фильтра. Эта длина вектора равна длине фильтра, и все ее значения равны скалярному значению.
Adapt port
- Включите порт Adapton
(по умолчанию) | off
Установите этот флажок, чтобы включить Adapt
входной порт.
Reset port
- Порт сбросаNone
(по умолчанию) | Rising edge
| Falling edge
| Either edge
| Non-zero sample
Когда вы хотите сбросить значение весов фильтра к их начальным значениям, используйте параметр Reset port. Сигнал сброса должен быть такой же скоростью, как и вход сигнала данных.
Выберите None
чтобы отключить Reset
порт. Чтобы включить порт Reset, выберите из списка один из следующих:
Rising edge
- Запускает операцию сброса, когда вход Reset делает одно из следующего:
Повышается с отрицательного значения до положительного значения или нуля
Поднимается с нуля до положительного значения, где подъем не является продолжением подъёма с отрицательного значения до нуля (см. следующий рисунок)
Falling edge
- Запускает операцию сброса, когда вход Reset делает одно из следующего:
Падает от положительного значения до отрицательного значения или нуля
Падает с нуля до отрицательного значения, где падение не является продолжением падения с положительного значения до нуля (см. следующий рисунок)
Either edge
- Запускает операцию сброса, когда вход Reset является Rising edge
или Falling edge
Non-zero sample
- Запускает операцию сброса в каждый шаг расчета, когда вход сброса не равен нулю
Output filter weights
- Выхода фильтраon
(по умолчанию) | off
Выберите параметр Output filter weights, чтобы экспортировать веса фильтров из Wts
порт. Для каждой итерации блок выводит текущие обновленные веса фильтров из этого порта.
Rounding mode
- Метод округленияFloor
(по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Задайте режим округления для операций с фиксированной точкой как один из следующих:
Floor
Ceiling
Convergent
Nearest
Round
Simplest
Zero
Для получения дополнительной информации смотрите режим округления.
Saturate on integer overflow
- Метод действия переполненияКогда вы выбираете этот параметр, блок насыщает результат своей операции с фиксированной точкой. Когда вы очищаете этот параметр, блок переносит результат своей операции с фиксированной точкой. Для получения дополнительной информации о saturate
и wrap
, см. Режим переполнения для операций с фиксированной точкой.
Parameters
- ПараметрыSame word length as first input
(по умолчанию) | Specify word length
| Binary point scaling
Выберите, как вы задаете размер слова и длину дроби коэффициента утечки и размер шага:
Same word length as first input
- Длина слова коэффициента утечки и размер шага совпадают с длиной слова первого входа в блок. В этом режиме длина дроби коэффициента утечки и размера шага автоматически устанавливается на только двоичную точку, которая обеспечивает вам лучшую точность, учитывая значение и размер слова коэффициентов.
Specify word length
- Вы можете ввести размер слова коэффициента утечки и размер шага, в битах. В этом режиме длина дроби коэффициента утечки и размера шага автоматически устанавливается на только двоичную точку, которая обеспечивает вам лучшую точность, учитывая значение и размер слова коэффициентов.
Binary point scaling
- Вы можете ввести размер слова и длину дроби коэффициента утечки и размер шага, в битах. Коэффициент утечки и размер шага должны иметь одинаковый размер слова, но длины дробей могут различаться.
Для Specify step size via
параметр, если вы выбираете Input port
, размер слова коэффициента утечки совпадает с размером слова размера шага, входа в Step-size
порт. Длина фракции коэффициента утечки автоматически устанавливается на лучшую точность, основанную на размере слова коэффициента утечки.
Этот параметр видим, только если установить параметр Specify step size via равным Dialog
Weights
- Длина слова и дроби весов фильтраSame as first input
(по умолчанию) | Binary point scaling
Выберите, как вы задаете размер слова и длину дроби весов фильтра блока:
Same as first input
- размер слова и длина дроби весов фильтра совпадают с длинами первых входов блока.
Binary point scaling
- Вы можете ввести размер слова и длину дроби весов фильтра, в битах.
Product and quotient
- Слово и дробь длины продукта и фактораSame as first input
(по умолчанию) | Binary point scaling
Выберите, как вы задаете размер слова и длину дроби u 'u, W' u, , , и частный, Q. Здесь, u является вектором входа, W является вектором весов фильтра, μ является размером шага, e является ошибкой, и Q является фактором, который определяется как
Same as first input
- размер слова и длина дроби этих величин совпадают с величинами первого входа в блок.
Binary point scaling
- Вы можете ввести размер слова и длину дроби этих величин, в битах. Размер слова для величин должна быть одинаковой, но длины дробей могут различаться.
Accumulator
- Длина слова и дроби аккумуляторовSame as first input
(по умолчанию) | Binary point scaling
Используйте этот параметр, чтобы задать, как вы хотите обозначить слово и длины дробей аккумуляторов для операций u 'u и W' u.
Примечание
Не используйте этот параметр, чтобы обозначить слово и длины дроби аккумулятора для операция. Тип данных аккумулятора для этой величины автоматически устанавливается таким же, как и тип данных продукта. Информация о минимальном, максимальном и переполнении для этого аккумулятора регистрируется как часть информации о продукте. Autoscaling рассматривает этот продукт и аккумулятор как один тип данных.
Same as first input
- Эти характеристики совпадают с характеристиками входов блока.
Binary point scaling
- Вы можете ввести размер слова и длину дроби аккумуляторов, в битах. Размер слова обоих аккумуляторов должна быть одинаковой, но длины дробей могут различаться.
Для рисунков, изображающих использование типа данных аккумулятора в этом блоке, смотрите Типы данных с фиксированной точкой и умножением.
Lock data type settings against changes by the fixed-point tools
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типов данных, заданных в диалоговом окне блока.
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
Когда вы выбираете LMS
для Algorithm
параметр, блок вычисляет веса фильтров с помощью алгоритма наименьшего среднего квадрата (LMS). Этот алгоритм определяется этими уравнениями.
Различные алгоритмы адаптивного фильтра LMS, доступные в этом блоке, определяются как:
LMS --
Нормализованный LMS --
В Normalized LMS, для преодоления потенциальной числовой нестабильности в обновлении весов, в знаменателе была добавлена небольшая положительная константа, Для ввода с двойной точностью с плавающей точностью, Для входных параметров с одной точностью с плавающей точностью Для входных параметров с фиксированной точкой
Sign-Error LMS --
Sign-Data LMS --
где u (n) реально.
Sign-Sign LMS --
где u (n) реально.
Переменная | Описание |
---|---|
n | Текущий индекс времени |
u (n) | Вектор буферизованных входных выборок на шаге n |
u * (n) | Комплексный сопряженный вектор буферизованных входных выборок на шаге n |
w (n) | Вектор оценки веса фильтра на шаге n |
y(n) | Отфильтрованный выход на шаге n |
e(n) | Ошибка расчета на шаге n |
d(n) | Желаемый ответ на шаге n |
µ | Размер шага адаптации |
α | Коэффициент утечки (0 < α ≤ 1) |
ε | Константа, которая исправляет любую потенциальную числовую нестабильность, которая возникает во время обновления весов. |
[1] Хейс, M.H. Статистическая цифровая обработка сигналов и моделирование. Нью-Йорк: John Wiley & Sons, 1996.
Сгенерированный код опирается на memcpy
или memset
функции (string.h
) при определенные обстоятельства.
Блок LMS Filter поддерживает генерацию кода SIMD с помощью технологии Intel AVX2 в следующих условиях:
Algorithm установлено на LMS
или Normalized LMS
.
Входной сигнал является реальным.
Входной сигнал имеет тип данных single
или double
.
Технология SIMD значительно повышает эффективность сгенерированного кода.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
По умолчанию в реализации LMS Filter используется линейная сумма для конечной импульсной характеристики секции фильтра.
LMS Filter реализует древовидное суммирование (которое имеет более короткий критический путь) при следующих условиях:
Фильтр LMS используется с реальными данными.
Тип данных Accumulator W 'u размера слова как минимум ceil(log2(filter
length))
биты шире, чем размер слова типа данных Product W 'u.
Тип данных Аккумулятор W 'u имеет ту же длину дроби, что и тип данных Продукт W' u.
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Этот блок поддерживает генерацию кода для сложных сигналов.
HDL Coder не поддерживает Normalized LMS
алгоритм фильтра LMS.
The Reset
порт поддерживает только Boolean
и unsigned
входы.
The Adapt
порт поддерживает только Boolean
входы.
Filter length должно быть больше или равно 2.
Если вход является фиксированной точкой, он должен быть подписанным целым числом или подписанной фиксированной точкой с степенью двойки и нулевым смещением.
Типы данных с фиксированной точкой
Следующие схемы показывают типы данных, используемые в блоке LMS Filter для сигналов с фиксированной точкой. Таблица суммирует определения переменных, используемых в схемах.
Переменная | Определение |
---|---|
u | Входной вектор |
W | Вектор весов фильтра |
µ | Размер шага |
e | Ошибка |
Q | Частный, |
Продукт u 'u | Тип данных продукта в Энергетической схеме |
Аккумулятор u 'u | Тип данных аккумулятора в Энергетической схеме |
Продукт W 'u | Тип данных продукта в схеме свертки |
Аккумулятор W 'u | Тип данных аккумулятора в схеме свертки |
Продукт | Тип данных продукта в Продукте размера шага и схемы ошибок |
Продукт | Тип данных продукта и аккумулятора в схеме обновления веса. 1 |
1Тип данных аккумулятора для этой величины автоматически устанавливается таким же, как и тип данных продукта. Информация о минимальном, максимальном и переполнении для этого аккумулятора регистрируется как часть информации о продукте. Autoscaling рассматривает этот продукт и аккумулятор как один тип данных.
Можно задать тип данных параметров, весов, продуктов, частных и аккумуляторов в маске блока. Входы, выходы и маски с фиксированной точкой этого блока должны иметь следующие характеристики:
Входной сигнал и требуемый сигнал должны иметь одинаковый размер слова, но их длины дробей могут различаться.
Размер шага и коэффициент утечки должны иметь одинаковый размер слова, но их длины могут различаться.
Сигнал выхода и сигнал ошибки имеют тот же размер слова и ту же длину дроби, что и требуемый сигнал.
Частный и выход продукта u 'u, W' u, , и операции должны иметь тот же размер слова, но их длины дробей могут различаться.
Тип данных аккумулятора операций u 'u и W' u должен иметь одинаковый размер слова, но их длины дробей могут различаться.
Выход умножителя находится в продукт типе выходных данных, если хотя бы один из входов в умножитель действителен. Если оба входов в умножитель являются комплексными, результат умножения находится в типе данных аккумулятора. Для получения дополнительной информации смотрите Типы данных умножения.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.