dsp.AdaptiveLatticeFilter

Фильтр адаптивной решетки

Описание

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

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

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

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

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

Создание

Описание

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

пример

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

пример

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

Свойства

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

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

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

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

Задайте метод, используемый для вычисления коэффициентов фильтра как один из 'Least-squares Lattice', 'QR-decomposition Least-squares Lattice', 'Gradient Adaptive Lattice'. Значение по умолчанию 'Least-squares Lattice'. Алгоритмы, используемые для реализации этих трех различных методов, см. [1] . Это [2]свойство неразрывно.

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

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

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

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

Зависимости

Это свойство применяется, только если для свойства Method задано значение 'Least-squares Lattice' или 'QR-decomposition Least-squares Lattice'.

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

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

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

Зависимости

Это свойство применяется только в том случае, если Method для свойства задано значение 'Gradient Adaptive Lattice'.

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

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

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

Зависимости

Это свойство применяется только в том случае, если Method для свойства задано значение 'Gradient Adaptive Lattice'.

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

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

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

Зависимости

Используйте это свойство только, если Method для свойства задано значение 'Gradient Adaptive Lattice'.

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

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

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

Зависимости

Это свойство применяется только в том случае, если Method для свойства задано значение 'Gradient Adaptive Lattice.

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

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

Если на Method для свойства задано значение 'Least-squares Lattice' или 'QR-decomposition Least-squares Lattice', значение по умолчанию является 1.0. Если на Method для свойства задано значение 'Gradient Adaptive Lattice', значение по умолчанию является 0.1.

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

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

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

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

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

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

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

Зависимости

Это свойство применимо только в том случае, если Method для свойства задано значение 'Gradient Adaptive Lattice'.

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

Синтаксис

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

D = 16;
b = exp(1i*pi/4)*[-0.7 1];
a = [1 -0.7];
ntr = 1000;
s = sign(randn(1,ntr+D)) + 1i*sign(randn(1,ntr+D));
n = 0.1*(randn(1,ntr+D) + 1i*randn(1,ntr+D));
r = filter(b,a,s) + n;
x = r(1+D:ntr+D);
d = s(1:ntr);

Используйте Adaptive Lattice Filter, чтобы вычислить фильтрованный выход и ошибку фильтра для входа и необходимого сигнала.

lam = 0.995;
del = 1;
alf = dsp.AdaptiveLatticeFilter('Length', 32, ...
    'ForgettingFactor', lam, 'InitialPredictionErrorPower', del);
[y,e] = alf(x,d);

Постройте график Синфазный и Квадратурные компоненты требуемых, выходных и сигналов ошибки.

subplot(2,2,1); plot(1:ntr,real([d;y;e]));
title('In-Phase Components');
legend('Desired','Output','Error');
xlabel('time index'); ylabel('signal value');
subplot(2,2,2); plot(1:ntr,imag([d;y;e]));
title('Quadrature Components');
legend('Desired','Output','Error');
xlabel('time index'); ylabel('signal value');

Figure contains 2 axes. Axes 1 with title In-Phase Components contains 3 objects of type line. These objects represent Desired, Output, Error. Axes 2 with title Quadrature Components contains 3 objects of type line. These objects represent Desired, Output, Error.

Постройте график рассеяния принятых и уравненных сигналов.

subplot(2,2,3); plot(x(ntr-100:ntr),'.'); axis([-3 3 -3 3]);
title('Received Signal Scatter Plot'); axis('square'); 
xlabel('Real[x]'); ylabel('Imag[x]'); grid on;
subplot(2,2,4); plot(y(ntr-100:ntr),'.'); axis([-3 3 -3 3]);
title('Equalized Signal Scatter Plot'); axis('square');
xlabel('Real[y]'); ylabel('Imag[y]'); grid on;

Figure contains 4 axes. Axes 1 with title In-Phase Components contains 3 objects of type line. These objects represent Desired, Output, Error. Axes 2 with title Quadrature Components contains 3 objects of type line. These objects represent Desired, Output, Error. Axes 3 with title Received Signal Scatter Plot contains an object of type line. Axes 4 with title Equalized Signal Scatter Plot contains an object of type line.

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

ha = fir1(31,0.5);
fir = dsp.FIRFilter('Numerator',ha); % FIR system to be identified 
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
n = 0.1*randn(size(x));             % Observation noise signal 
d = fir(x)+n;                   % Desired signal 
l = 32;                             % Filter length 
m  = 5;                             % Decimation factor for analysis
                                    % and simulation results 
ha = dsp.AdaptiveLatticeFilter(l); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(ha,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse));
xlabel('Iteration'); ylabel('MSE (dB)');
title('Learning curve for Adaptive Lattice filter used in system identification')

Figure contains an axes. The axes with title Learning curve for Adaptive Lattice filter used in system identification contains an object of type line.

Ссылки

[1] Griffiths, Lloyd J. «Непрерывно адаптивный фильтр, реализованный как структура решетки». Материалы IEEE Int. Конф. по акустике, речи и обработке сигналов, Хартфорд, КТ, стр. 683-686, 1977.

[2] Haykin, S. Adaptive Filter Theory, 4th Ed. Upper Saddle River, NJ: Prentice Hall, 1996.

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

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