dsp.FastTransversalFilter

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

Описание

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 значение свойства Длины.

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

Зависимости

Это свойство применяется только если 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Сбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Система идентификации является процессом идентификации коэффициентов неизвестной системы с помощью адаптивного фильтра. Общий обзор процесса, как показывают, в System Identification – Используя Адаптивный Фильтр Идентифицирует Неизвестную Систему. Основные включенные компоненты:

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

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

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

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

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

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

Создайте dsp.FIRFilter объект, который представляет систему, которая будет идентифицирована. Используйте fir1 функционируйте, чтобы спроектировать коэффициенты фильтра. Спроектированный фильтр является 10-м порядком цифровой фильтр lowpass с частотой среза 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');

Ссылки

[1] Haykin, Саймон. Адаптивная теория фильтра, 4-й Эд. Верхний Сэддл-Ривер, NJ: Prentice Hall, 2002.

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

Введенный в R2013b