dsp.FastTransversalFilter

Быстрый поперечный адаптивный фильтр конечной импульсной характеристики наименьшими квадратами

Описание

The dsp.FastTransversalFilter вычисляет выход, ошибку и коэффициенты с помощью быстрой поперечной конечной импульсной характеристики адаптивного фильтра методом наименьших квадратов.

Для реализации объекта адаптивной конечной импульсной характеристики фильтра:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

пример

ftf = dsp.FastTransversalFilter(len) возвращает dsp.FastTrasversalFilter Системный объект с Length значение свойства установлено в len.

ftf = dsp.FastTransversalFilter(Name,Value) возвращает dsp.FastTransversalFilter Системный объект с каждым заданным свойством устанавливается на заданное значение.

Свойства

расширить все

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

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

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

Задайте метод, используемый для вычисления коэффициентов фильтра как 'Fast transversal least-squares' или 'Sliding-window fast transversal least-squares'. Алгоритмы, используемые для реализации этих двух различных методов, см. в [1]. Это свойство неразрывно.

Задайте длину вектора коэффициентов конечной импульсной характеристики фильтра как положительное целое значение.

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

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

Зависимости

Это свойство применяется только в том случае, если Method для свойства задано значение 'Sliding-window fast transversal least-squares'.

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

Задайте коэффициент забывания быстрого поперечного фильтра как положительная скалярная величина в область значений (0,1]. Установка этого значения равной 1 обозначает бесконечную память во время адаптации фильтра. Установка значения этого свойства 1 обозначает бесконечную память при адаптации к поиску нового фильтра. Для наилучших результатов установите это свойство в значение, которое находится в области значений [1-0.5/L,1], где L - значение свойства Length.

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

Зависимости

Это свойство применяется только в том случае, если Method для свойства задано значение 'Fast transversal least-squares'.

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

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

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

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

Задайте начальное значение коэффициента преобразования быстрого поперечного фильтра.

Значение этого свойства зависит от Method свойство. Если Method установлено в:

  • 'Fast transversal least-squares' -- Это свойство должно быть положительным числовым значением, меньшим или равным 1

  • 'Sliding-window fast transversal least-squares' - Это свойство должно быть двухэлементным числовым вектором. Первый элемент этого вектора должен лежать в области значений [0,1], а второй элемент должен быть меньше или равен -1. В этом случае значение по умолчанию является [1,-1].

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

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

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

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

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

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

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

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

Синтаксис

Описание

пример

[y,err] = ftf(x,d) фильтрует входные x, использование d в качестве необходимого сигнала и возвращает отфильтрованный выход в y и ошибка фильтра в err. Системный объект оценивает веса фильтра, необходимые для минимизации ошибки между выходом сигналом и желаемым сигналом.

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

расширить все

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

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

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

Быстрый поперечный фильтр адаптирует свои веса фильтров, wts, чтобы минимизировать ошибку, err, и сходятся входной сигнал x к желаемому сигналу d максимально близко. Вы можете получить доступ к текущим весам фильтра, позвонив ftf.Coefficients, где ftf - объект быстрого поперечного фильтра.

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

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

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

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

расширить все

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

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

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Система идентификации является процессом идентификации коэффициентов неизвестной системы с помощью адаптивного фильтра. Общий обзор процесса показан на Систему идентификации - Использование адаптивного фильтра для идентификации неизвестной системы. Основными компонентами являются:

  • Алгоритм адаптивного фильтра.

  • Неизвестная система или процесс для адаптации. В этом примере фильтр разработан fir1 - неизвестная система.

  • Соответствующие входные данные для осуществления процесса адаптации. В типовой модели системы идентификации требуемый сигнал d (k) и входной сигнал x (k) используются для осуществления процесса адаптации.

Цель адаптивного фильтра состоит в том, чтобы минимизировать сигнал ошибки между выходом адаптивного фильтра y (k) и выходом неизвестной системы (или системы, которая будет идентифицирована) d (k). Когда сигнал ошибки минимизируется, адаптированный фильтр напоминает неизвестную систему. Коэффициенты обоих фильтров тесно совпадают.

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

Неизвестная система

Создайте dsp.FIRFilter объект, который представляет систему, которая будет идентифицирована. Используйте fir1 функция для разработки коэффициентов фильтра. Разработанный фильтр является lowpass цифровым фильтром 10-го порядка с частотой отключения 0,25.

filt = dsp.FIRFilter;
filt.Numerator = fir1(10,.25)
filt = 
  dsp.FIRFilter with properties:

            Structure: 'Direct form'
      NumeratorSource: 'Property'
            Numerator: [1x11 double]
    InitialConditions: 0

  Show all properties

Передайте сигнал x к конечная импульсная характеристика. Требуемый сигнал d - сумма выхода неизвестной системы ( конечная импульсная характеристика) и аддитивного сигнала шума n.

x = randn(1000,1);
d = filt(x) + 0.01*randn(1000,1);

Адаптивный фильтр

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

Создайте dsp.FastTransversalFilter объект для представления адаптивного фильтра. Установите длину адаптивного фильтра равной 11 отводам и коэффициент забывания 0,99.

ftf1 = dsp.FastTransversalFilter(11,'ForgettingFactor',0.99)
ftf1 = 
  dsp.FastTransversalFilter with properties:

                         Method: 'Fast transversal least-squares'
                         Length: 11
               ForgettingFactor: 0.9900
    InitialPredictionErrorPower: 10
            InitialCoefficients: 0
        InitialConversionFactor: 1
               LockCoefficients: false

Передайте основной входной сигнал x и желаемый сигнал d к быстрому поперечному фильтру. Запустите адаптивный фильтр, чтобы определить неизвестную систему. Область выхода y адаптивный фильтр является сигналом, сходящимся к желаемому сигналу d, тем самым минимизируя ошибку e между двумя сигналами.

[y,e] = ftf1(x,d);
w = ftf1.Coefficients
w = 1×11

   -0.0043    0.0016    0.0308    0.1171    0.2204    0.2677    0.2210    0.1181    0.0323    0.0013   -0.0037

Постройте график результатов. Сигнал выхода очень близко соответствует требуемому сигналу, делая ошибку между ними близкой к нулю.

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');

Figure contains 2 axes. Axes 1 with title System Identification of an FIR filter contains 3 objects of type line. These objects represent Desired, Output, Error. Axes 2 contains 2 objects of type stem. These objects represent Actual, Estimated.

Ссылки

[1] Хайкин, Симон. Адаптивная теория фильтров, 4-я ред. Верхняя Седловая река, Нью-Джерси: Prentice Hall, 2002.

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

.
Введенный в R2013b