exponenta event banner

dsp. FastTransversalFilter

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

Описание

dsp.FastTransversalFilter вычисляет выходной сигнал, ошибку и коэффициенты, используя быстрый поперечный адаптивный КИХ-фильтр наименьших квадратов.

Для реализации объекта адаптивного фильтра FIR:

  1. Создать dsp.FastTransversalFilter и задайте его свойства.

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

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

Создание

Описание

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

пример

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

Укажите начальные значения коэффициентов адаптивного фильтра FIR как скаляр или вектор длины, равный значению Length собственность.

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

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

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

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

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

Синтаксис

Описание

пример

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

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

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

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

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

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

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

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

Требуемым сигналом может быть сигнал переменного размера. Можно изменить количество элементов в векторе столбца, даже если объект заблокирован. Объект System блокируется при вызове объекта для выполнения его алгоритма.

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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

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

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

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

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

Создать dsp.FIRFilter объект, представляющий идентифицируемую систему. Используйте fir1 функция для разработки коэффициентов фильтра. Проектируемый фильтр представляет собой цифровой фильтр нижних частот 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 к фильтру FIR. Требуемый сигнал 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-я эд. река Верхнее Седло, Нью-Джерси: Прентис Холл, 2002.

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

.
Представлен в R2013b