EngeeDSP.LMSFilter
Вычисляет выходные данные, ошибку и коэффициенты с помощью метода наименьших квадратов (LMS).
| Библиотека |
|
| Блок |
Описание
Системный объект EngeeDSP.LMSFilter реализует адаптивный фильтр с конечной импульсной характеристикой (КИХ-фильтр), который обеспечивает сходимость входного сигнала к требуемому сигналу с использованием одного из следующих алгоритмов:
-
LMS;
-
Normalized LMS;
-
Sign-Data LMS;
-
Sign-Error LMS;
-
Sign-Sign LMS.
Подробную информацию об этих алгоритмах см. в разделе Алгоритмы.
Фильтр адаптирует свои весовые коэффициенты до тех пор, пока ошибка между опорным входным сигналом и требуемым сигналом не станет минимальной.
Чтобы отфильтровать сигнал с помощью адаптивного КИХ-фильтра, выполните следующие действия:
-
Создайте объект EngeeDSP.LMSFilter и установите его свойства.
-
Вызовите объект с аргументами, как если бы это была функция.
Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.
Синтаксис
Создание
-
lms = EngeeDSP.LMSFilter()— возвращает системный объект адаптивного КИХ-фильтраlms, который вычисляет отфильтрованный выходной сигнал, ошибку фильтрации и весовые коэффициенты фильтра для заданного входного и требуемого сигналов, используя алгоритм наименьших квадратов (LMS). -
lms = EngeeDSP.LMSFilter(Name=Value)— возвращает системный объект адаптивного КИХ-фильтра с заданными свойствами в виде парыName=Value, гдеName— имя свойства, аValue— соответствующее значение. Можно указать несколько пар «имя-значение», порядок пар не имеет значения. Неуказанные свойства сохраняют свои значения по умолчанию.
Использование
-
y,err,wts = lms(x,d)— фильтрует входной сигналx, используяdв качестве требуемого сигнала, и возвращает отфильтрованный выходной сигналy, ошибку фильтрацииerrи оценочные весовые коэффициенты фильтраwts. Объектlmsоценивает весовые коэффициенты, необходимые для минимизации ошибки между выходным сигналом и требуемым сигналом. -
y,err = lms(x,d)— возвращает только отфильтрованный выходной сигналyи ошибку фильтрацииerr, если для свойства OutputFilterWeights установлено значениеfalse. -
___ = lms(x,d,mu)— используетmuв качестве размера шага, если для свойства SpecifyStepSizeVia установлено значение"Input port". Эти входные аргументы можно использовать с любым из предыдущих наборов выходных аргументов. -
___ = lms(x,d,a)— используетaв качестве сигнала, управляющего адаптацией, если для свойства AdaptPort установлено значениеtrue. Когдаaне равно нулю, фильтр непрерывно обновляет весовые коэффициенты фильтра. Когдаaравно нулю, весовые коэффициенты фильтра остаются постоянными. -
___ = lms(x,d,r)— используетrв качестве сигнала сброса, если для свойства ResetPort установлено значение"Rising edge","Falling edge","Either edge"или"Non-zero sample". Если происходит событие сброса, фильтр сбрасывает весовые коэффициенты фильтра до их начальных значений. -
y,err,wts = lms(x,d,mu,a,r)— фильтрует входной сигналx, используяdв качестве требуемого сигнала,muв качестве размера шага,aв качестве сигнала, управляющего адаптацией, иrв качестве сигнала сброса. Объект возвращает отфильтрованный выходной сигналy, ошибку фильтраerrи адаптированные весовые коэффициенты фильтраwts. Установите соответствующие свойства, чтобы предоставить все возможные входные данные.
Аргументы
Входные аргументы
#
d —
требуемый сигнал
скаляр | вектор-столбец
Details
Фильтр LMS адаптирует свои весовые коэффициенты wts для минимизации ошибки err и максимально точного приближения входного сигнала x к требуемому сигналу d.
Входной сигнал x и требуемый сигнал d должны иметь одинаковый размер и тип данных.
Входной сигнал d может иметь переменный размер. Количество элементов в векторе-столбце можно изменять даже после того, как объект перешел в заблокированное состояние. Системный объект блокируется при вызове его алгоритма.
| Типы данных |
|
| Поддержка комплексных чисел |
Да |
#
mu —
размер шага
неотрицательный скаляр
Details
Коэффициент размера шага адаптации, заданный как неотрицательный скаляр. Для обеспечения сходимости метода "Normalized LMS" размер шага должен быть больше 0 и меньше 2. Тип данных входного размера шага должен соответствовать типу данных аргументов x и d.
Малый размер шага обеспечивает малую ошибку в установившемся режиме между выходным сигналом y и требуемым сигналом d. Если размер шага мал, скорость сходимости фильтра снижается. Для повышения скорости сходимости увеличьте размер шага. Обратите внимание, что если размер шага велик, фильтр может стать неустойчивым.
Зависимости
Чтобы использовать этот аргумент, установите для свойства SpecifyStepSizeVia значение "Input port".
| Типы данных |
|
#
a —
управление адаптацией
скаляр
Details
Входной сигнал управления адаптацией, определяющий способ обновления весовых коэффициентов фильтра. Если значение этого аргумента не равно нулю, объект постоянно обновляет весовые коэффициенты фильтра. Если значение этого аргумента равно нулю, весовые коэффициенты фильтра остаются на своих текущих значениях.
Зависимости
Чтобы использовать этот аргумент, установите для свойства AdaptPort значение true.
| Типы данных |
|
#
r —
сигнал сброса
скаляр
Details
Сигнал сброса, который сбрасывает весовые коэффициенты фильтра на основе значений свойства ResetPort.
Зависимости
Чтобы использовать этот аргумент, установите для свойства ResetPort значение "Rising edge", "Falling edge", "Either edge" или "Non-zero sample".
| Типы данных |
|
Выходные аргументы
#
y —
отфильтрованный выходной сигнал
скаляр | вектор-столбец
Details
#
err —
разница между выходным и требуемым сигналами
скаляр | вектор-столбец
Details
Разница между выходным сигналом y и требуемым сигналом d, возвращаемая в виде скаляра или вектора-столбца. Тип данных err соответствует типу данных y. Цель адаптивного фильтра — минимизировать эту ошибку. Объект адаптирует свои весовые коэффициенты для сходимости к оптимальным весовым коэффициентам фильтра, которые обеспечивают выходной сигнал, максимально приближенный к требуемому сигналу.
| Типы данных |
|
#
wts —
адаптивные весовые коэффициенты фильтра
скаляр | вектор-столбец
Details
Адаптивные весовые коэффициенты фильтра, возвращаемые в виде скаляра или вектора-столбца, длина которого определяется значением свойства FilterLength.
| Типы данных |
|
Свойства
#
OutputFilterWeights —
весовые коэффициенты на выходе фильтра
Logical
Details
Установите для этого свойства значение true (по умолчанию), чтобы получать весовые коэффициенты фильтра из выходного аргумента wts.
Чтобы не использовать выходной аргумент wts, установите для этого свойства значение false.
#
ResetPort —
дополнительный вход для активации сброса значений весовых коэффициентов
String
Details
Событие, инициирующее сброс весовых коэффициентов фильтра, заданное одним из следующих вариантов:
-
"None"(по умолчанию) — не использовать входной аргументr. -
"Rising edge"— запускает операцию сброса, когда сигналrизменяется следующим образом:-
повышается от отрицательного значения до положительного или нуля;
-
повышается от нуля до положительного значения, когда повышение не является продолжением повышения от отрицательного значения до нуля, как показано на рисунке:
-
-
"Falling edge"— запускает операцию сброса, когда сигналrизменяется следующим образом:-
понижается от положительного значения до отрицательного или нуля;
-
понижается от нуля до отрицательного значения, когда понижение не является продолжением понижения от положительного значения до нуля, как показано на рисунке:
-
-
"Either edge"— запускает операцию сброса, когда на входном аргументеrпроисходит событие запуска"Rising edge"или"Falling edge". -
"Non-zero sample"— запускает операцию сброса в каждый такт выборки, когда сигналrне равен нулю.
#
Algorithm —
алгоритм расчета весов фильтра
String
Details
Метод вычисления весовых коэффициентов фильтра, заданный одним из следующих способов:
-
"LMS"(по умолчанию) — решает уравнение Винера — Хопфа и находит коэффициенты фильтра для адаптивного фильтра. -
"Normalized LMS"— нормализованный вариант алгоритма LMS. -
"Sign-Data LMS"— коррекция весовых коэффициентов фильтра на каждой итерации зависит от знака входного сигналаx. -
"Sign-Error LMS"— коррекция, применяемая к текущим весовым коэффициентам фильтра на каждой последующей итерации, зависит от знака ошибкиerr. -
"Sign-Sign LMS"— коррекция, применяемая к текущим весовым коэффициентам фильтра на каждой последующей итерации, зависит как от знакаx, так и от знакаerr.
Подробную информацию об этих алгоритмах см. в разделе Алгоритмы.
#
StepSize —
размер шага
Real number
Details
Коэффициент размера шага адаптации, заданный как неотрицательный скаляр. Для обеспечения сходимости метода "Normalized LMS" размер шага должен быть больше 0 и меньше 2.
Малый размер шага обеспечивает низкую установившуюся ошибку между выходным сигналом y и требуемым сигналом d. Однако при малом размере шага скорость сходимости фильтра снижается. Чтобы повысить скорость сходимости, следует увеличить размер шага. Следует учитывать, что при слишком большом размере шага фильтр может стать неустойчивым.
Значение по умолчанию — 0.1.
Зависимости
Чтобы использовать это свойство, установите для свойства SpecifyStepSizeVia значение "Dialog".
#
LeakageFactor —
коэффициент потерь
Real number
Details
Коэффициент потерь для реализации алгоритма LMS с потерями (leaky LMS), заданный как скаляр в диапазоне [0, 1]. Если значение равно 1 (по умолчанию), потери в алгоритме адаптации отсутствуют. Если значение меньше 1, фильтр реализует алгоритм LMS с потерями.
#
AdaptPort —
использование входного аргумента для обновления весовых коэффициентов фильтра
Logical
Details
Опция использования входного аргумента для обновления весовых коэффициентов фильтра, заданная одним из следующих значений:
-
false(по умолчанию) — объект непрерывно обновляет весовые коэффициенты фильтра; -
true— при вызове алгоритма объекту передается входной сигнал управления адаптациейa. Если значение этого сигнала отлично от нуля, объект непрерывно обновляет весовые коэффициенты фильтра. Если значение сигнала равно нулю, весовые коэффициенты фильтра сохраняют свои текущие значения.
#
InitialValueOfFilterWeights —
начальные значения весовых коэффициентов фильтра
Scalar / array of real and/or complex numbers
Details
Начальные значения весовых коэффициентов фильтра, заданные как скаляр или вектор длиной, равной значению свойства FilterLength.
Значение по умолчанию — 0.
#
FilterLength —
длина фильтра
Int64 integer
Details
Длина вектора коэффициентов КИХ-фильтра, заданная как положительное целое число.
Значение по умолчанию — 32.
Алгоритмы
Алгоритм LMS-фильтра определяется следующими уравнениями:
Различные алгоритмы адаптивного LMS-фильтра, которые можно задать в значении свойства Algorithm, определяются следующим образом:
-
"LMS"— решает уравнение Винера — Хопфа и находит коэффициенты фильтра для адаптивного фильтра: -
"Normalized LMS"— нормализованный вариант алгоритма LMS:В случае
"Normalized LMS", чтобы преодолеть потенциальную численную нестабильность при обновлении весов, в знаменатель добавлена небольшая положительная константа . Для входных данных с плавающей запятой двойной точности равняется выходу функцииeps(Float64). Для данных одинарной точности равняется выходу функцииeps(Float32). -
"Sign-Error LMS"— коррекция, применяемая к текущим весовым коэффициентам фильтра на каждой последующей итерации, зависит от знака ошибки : -
"Sign-Data LMS"— коррекция весовых коэффициентов фильтра на каждой итерации зависит от знака входного сигнала :где состоит из вещественных чисел.
-
"Sign-Sign LMS"— коррекция, применяемая к текущим весовым коэффициентам фильтра на каждой последующей итерации, зависит как от знака , так и от знака :где состоит из вещественных чисел.
В уравнениях выше используются следующие переменные:
-
— индекс текущего времени;
-
— вектор буферизованных входных отсчетов на шаге ;
-
— комплексно-сопряженный вектор буферизованных входных отсчетов на шаге ;
-
— вектор весовых оценок фильтра на шаге ;
-
— отфильтрованный выходной сигнал на шаге ;
-
— ошибка оценки на шаге ;
-
— требуемый сигнал на шаге ;
-
— размер шага адаптации;
-
— коэффициент потерь такой, что ;
-
— константа, которая корректирует любую потенциальную численную нестабильность, возникающую во время обновления весов.