dsp. FastTransversalFilter

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

Описание

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

Реализовывать адаптивный КИХ-объект фильтра:

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

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

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

Создание

Синтаксис

ftf = dsp.FastTransversalFilter
ftf = dsp.FastTransversalFilter(len)
ftf = dsp.FastTransversalFilter(Name,Value)

Описание

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

пример

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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 | логический

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

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

Типы данных: 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 | логический

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

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

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

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

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

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

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

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

Синтаксис

[y,err] = ftf(x,d)

Описание

пример

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

Примеры

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

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным синтаксисом step. Например, myObject (x) становится шагом (myObject, x).

ftf1 = dsp.FastTransversalFilter(11,'ForgettingFactor',0.99);
filt = dsp.FIRFilter;
filt.Numerator = fir1(10,.25);
x = randn(1000,1);
d = filt(x) + 0.01*randn(1000,1);
[y,e] = ftf1(x,d);
w = ftf1.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');

Ссылки

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

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

Введенный в R2013b