dsp. RLSFilter

Вычислите вывод, ошибку и коэффициенты с помощью алгоритма рекурсивных наименьших квадратов (RLS)

Описание

Система dsp.RLSFilter object™ фильтрует каждый канал входа с помощью реализаций фильтра RLS.

Отфильтровать каждый канал входа:

  1. Создайте объект dsp.RLSFilter и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

rlsFilt = dsp.RLSFilter
rlsFilt = dsp.RLSFilter(len)
rlsFilt = dsp.RLSFilter(Name,Value)

Описание

rlsFilt = dsp.RLSFilter возвращается адаптивный RLS фильтруют Системный объект, rlsFilt. Этот Системный объект вычисляет отфильтрованный вывод, ошибку фильтра и веса фильтра для данного входа и желал сигнала с помощью алгоритма RLS.

пример

rlsFilt = dsp.RLSFilter(len) возвращается RLS фильтруют Системный объект, rlsFilt. Этот Системный объект имеет набор свойств Length к len.

rlsFilt = dsp.RLSFilter(Name,Value) возвращается RLS фильтруют Системный объект с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки. Незаданные свойства имеют значения по умолчанию.

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Можно указать, что метод раньше вычислял коэффициенты фильтра как [1] [2] Conventional RLS, [3] [4] Householder RLS, Sliding-window RLS [5][1][2], Householder sliding-window RLS [4], или [1] [2] QR decomposition. Это свойство является ненастраиваемым.

Задайте длину содействующего вектора фильтра RLS как скалярное положительное целочисленное значение. Это свойство является ненастраиваемым.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте ширину раздвижного окна как скалярное положительное целочисленное значение, больше, чем или равный значению свойства Length. Это свойство является ненастраиваемым.

Зависимости

Это свойство применяется только, когда свойство Method установлено в Sliding-window RLS или Householder sliding-window RLS.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Настраиваемый: да

Типы данных: single | double

Задайте начальные значения КИХ адаптивные коэффициенты фильтра как скаляр или вектор длины, равной значению свойства Length.

Настраиваемый: да

Типы данных: single | double

Задайте начальные значения обратной ковариационной матрицы входного сигнала. Это свойство должно быть или скаляром или квадратной матрицей с каждой размерностью, равной значению свойства Length. Если вы устанавливаете скалярное значение, свойство InverseCovariance инициализируется к диагональной матрице с диагональными элементами, равными тому скалярному значению.

Настраиваемый: да

Зависимости

Это свойство применяется только, когда свойство Method установлено в Conventional RLS или Sliding-window RLS.

Типы данных: single | double

Задайте начальные значения ковариационной матрицы инверсии квадратного корня входного сигнала. Это свойство должно быть или скаляром или квадратной матрицей с каждой размерностью, равной значению свойства Length. Если вы устанавливаете скалярное значение, свойство SquareRootInverseCovariance инициализируется к диагональной матрице с диагональными элементами, равными тому скалярному значению.

Настраиваемый: да

Зависимости

Это свойство применяется только, когда свойство Method установлено в Householder RLS или Householder sliding-window RLS.

Типы данных: single | double

Задайте начальные значения ковариационной матрицы квадратного корня входного сигнала. Это свойство должно быть или скаляром или квадратной матрицей с каждой размерностью, равной значению свойства Length. Если вы устанавливаете скалярное значение, свойство SquareRootCovariance инициализируется к диагональной матрице с диагональными элементами, равными скалярному значению.

Настраиваемый: да

Зависимости

Это свойство применяется только, когда свойство Method установлено в QR-decomposition RLS.

Типы данных: single | double

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

Настраиваемый: да

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

y = rlsFilt(x,d)
[y,e] = rlsFilt(x,d)

Описание

пример

y = rlsFilt(x,d) рекурсивно адаптирует ссылочный вход, x, чтобы совпадать с желаемым сигналом, d, с помощью Системного объекта, rlsFilt. Желаемый сигнал, d, является сигналом, желаемым плюс некоторый нежелательный шум.

[y,e] = rlsFilt(x,d) показывает вывод фильтра RLS наряду с ошибкой, e, между ссылочным входом и желаемым сигналом. Фильтры адаптируют его коэффициенты до ошибки, e минимизирован. Можно получить доступ к этим коэффициентам путем доступа к свойству Coefficients объекта. Это может быть сделано только после вызова объекта. Например, чтобы получить доступ к оптимизированным коэффициентам фильтра rlsFilt, вызовите rlsFilt.Coefficients после того, как вы передадите вход и желаемый сигнал к объекту.

Входные параметры

развернуть все

Сигнал, который будет отфильтрован фильтром RLS. Вход, x, и желаемый сигнал, d, должен иметь тот же размер и тип данных.

Вход может быть сигналом переменного размера. Можно изменить число элементов в вектор-столбце, даже когда объект заблокирован. Системный объект блокирует, когда вы вызываете объект запустить его алгоритм.

Типы данных: single | double
Поддержка комплексного числа: Да

Фильтр RLS адаптирует свои коэффициенты, чтобы минимизировать ошибку, e, и сходиться входной сигнал x к желаемому d сигнала максимально тесно.

Вход, x, и желаемый сигнал, d, должен иметь тот же размер и тип данных.

Желаемый сигнал, d, может быть сигналом переменного размера. Можно изменить число элементов в вектор-столбце, даже когда объект заблокирован. Системный объект блокирует, когда вы вызываете объект запустить его алгоритм.

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

развернуть все

Фильтрованный выходной параметр, возвращенный как скаляр или вектор-столбец. Объект адаптирует свои коэффициенты фильтра, чтобы сходиться входной сигнал x, чтобы совпадать с желаемым d сигнала. Фильтр выводит сходившийся сигнал.

Типы данных: single | double
Поддержка комплексного числа: Да

Различие между выходным сигналом y и желаемым d сигнала, возвращенным как скаляр или вектор-столбец. Цель фильтра RLS состоит в том, чтобы минимизировать эту ошибку. Объект адаптирует свои коэффициенты, чтобы сходиться к оптимальным коэффициентам фильтра, которые производят выходной сигнал, который соответствует тесно с желаемым сигналом. Для получения дополнительной информации о том, как e вычисляется, см. Алгоритмы. Чтобы получить доступ к коэффициентам фильтра RLS, вызовите rlsFilt.Coefficients после того, как вы передадите вход и желаемый сигнал к объекту.

Типы данных: single | double
Поддержка комплексного числа: Да

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

msesimПредполагаемая среднеквадратическая ошибка для адаптивных фильтров
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Используйте Систему фильтра RLS object™, чтобы определить значение сигналов.

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом step. Например, obj(x) становится step(obj,x).

rls1 = dsp.RLSFilter(11, 'ForgettingFactor', 0.98);
filt = dsp.FIRFilter('Numerator',fir1(10, .25)); % Unknown System
x = randn(1000,1);                       % input signal
d = filt(x) + 0.01*randn(1000,1); % desired signal
[y,e] = rls1(x, d);
w = rls1.Coefficients;
subplot(2,1,1), plot(1:1000, [d,y,e]);
title('System Identification of an FIR filter');
legend('Desired', 'Output', 'Error');
xlabel('time index'); ylabel('signal value');
subplot(2,1,2); stem([filt.Numerator; w].');
legend('Actual','Estimated');
xlabel('coefficient #'); ylabel('coefficient value');

Подавление помех

rls2 = dsp.RLSFilter('Length', 11, 'Method', 'Householder RLS');
filt2 = dsp.FIRFilter('Numerator',fir1(10, [.5, .75]));
x = randn(1000,1);                           % Noise
d = filt2(x) + sin(0:.05:49.95)';     % Noise + Signal
[y, err] = rls2(x, d);
subplot(2,1,1), plot(d), title('Noise + Signal');
subplot(2,1,2), plot(err), title('Signal');

Алгоритмы

Системный объект dsp.RLSFilter, когда Conventional RLS выбран, рекурсивно вычисляет оценку методом наименьших квадратов (RLS) КИХ-весов фильтра. Системный объект оценивает веса фильтра или коэффициенты, должен был преобразовать входной сигнал в желаемый сигнал. Входной сигнал может быть скаляром или вектор-столбцом. Желаемый сигнал должен иметь совпадающий тип данных, сложность и размерности как входной сигнал. Соответствующий фильтр RLS выражается в матричной форме как P (n):

k(n)=λ1P(n1)u(n)1+λ1uH(n)P(n1)u(n)y(n)=wT(n1)u(n)e(n)=d(n)y(n)w(n)=w(n1)+k(n)e(n)P(n)=λ1P(n1)λ1k(n)uH(n)P(n1)

где λ-1 обозначает обратную величину экспоненциального фактора взвешивания. Переменные следующие:

ПеременнаяОписание
nИндекс текущего времени
u (n)Вектор буферизированных входных выборок на шаге n
Pn Матрица обратной корреляции на шаге n
k (n)Вектор усиления на шаге n
w (n)Вектор фильтра касается оценок на шаге n
y (n)Отфильтрованный вывод на шаге n
e (n)Ошибка оценки на шаге n
dN Желаемый ответ на шаге n
λФактор упущения

u, w и k являются всеми вектор-столбцами.

Ссылки

[1] М Хейз, статистическая цифровая обработка сигналов и моделирование, Нью-Йорк: Вайли, 1996.

[2] С. Хейкин, адаптивная теория фильтра, 4-й выпуск, верхний Сэддл-Ривер, NJ: Prentice Hall, 2002.

[3] А.А. Ронтоджиэннис и С. Зэодоридис, "Обратная факторизация адаптивные алгоритмы наименьших квадратов", Обработка сигналов, издание 52, № 1, стр 35-47, июль 1996.

[4] Южная Каролина Дуглас, "Численно устойчивый O (N2) RLS алгоритмы с помощью предварительного отбеливания наименьших квадратов", Proc. Конференция Int IEEE по Акустике, Речи, и Обработке сигналов, Стамбулу, Турция, изданию I, стр 412-415, июнь 2000.

[5] А. Х. Сайед, основные принципы адаптивной фильтрации, Хобокена, NJ: John Wiley & Sons, 2003.

Расширенные возможности

Введенный в R2013a