dsp.AffineProjectionFilter

Вычислите выход, ошибку и коэффициенты, используя алгоритм аффинной проекции (AP)

Описание

The dsp.AffineProjectionFilter Система object™ фильтрует каждый канал входа с помощью реализаций фильтра AP.

Для фильтрации каждого канала входного входа:

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

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

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

Создание

Описание

apf = dsp.AffineProjectionFilter возвращает адаптивный фильтр конечной импульсной характеристики Системного объекта, apf. Этот системный объект вычисляет отфильтрованный выход и ошибку фильтра для заданного входного и желательного сигнала, используя алгоритм аффинной проекции (AP).

пример

apf = dsp.AffineProjectionFilter(len) возвращает объект фильтра проекции аффина с Length значение свойства установлено в len.

пример

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

Свойства

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

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

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

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

Задайте метод, используемый для вычисления коэффициентов фильтра как Direct Matrix Inversion, Recursive Matrix Update, Block Direct Matrix Inversion. Это свойство неразрывно.

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

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

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

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

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

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

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

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

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

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

Задайте начальные значения для матрицы смещения входа ковариации. Это свойство должно быть либо скалярным положительным числовым значением, либо положительно-определенной квадратной матрицей с каждой размерностью, равной ProjectionOrder значение свойства. Если это скалярное значение, OffsetCovariance свойство инициализируется в диагональную матрицу с диагональными элементами, равными этому скалярному значению. Если это квадратная матрица, OffsetCovariance свойство инициализируется в значение этой квадратной матрицы.

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

Зависимости

Это свойство применимо только в том случае, если Method для свойства задано значение Direct Matrix Inversion или Block Direct Matrix Inversion.

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

Задайте начальные значения для входа смещения ковариации обратной матрицы. Это свойство должно быть либо скалярным положительным числовым значением, либо положительно-определенной квадратной матрицей с каждой размерностью, равной ProjectionOrder значение свойства. Если это скалярное значение, InverseOffsetCovariance свойство инициализируется в диагональную матрицу с каждым диагональным элементом, равным этому скалярному значению. Если это квадратная матрица, InverseOffsetCovariance свойство инициализируется в значения этой квадратной матрицы.

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

Зависимости

Это свойство применимо только в том случае, если Method для свойства задано значение Recursive Matrix Update.

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

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

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

Зависимости

Это свойство применимо только в том случае, если Method для свойства задано значение Recursive Matrix Update.

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

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

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

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

Синтаксис

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Эквализация QPSK с использованием 32-Coefficient конечная импульсная характеристика (1000 итераций)

D = 16;                      % Number of samples of delay
b = exp(1i*pi/4)*[-0.7 1];    % Numerator coefficients of channel
a = [1 -0.7];                % Denominator coefficients of channel
ntr = 1000;                  % Number of iterations
s = sign(randn(1,ntr+D)) + 1i*sign(randn(1,ntr+D)); % Baseband signal
n = 0.1*(randn(1,ntr+D) + 1i*randn(1,ntr+D));       % Noise signal
r = filter(b,a,s)+n;         % Received signal
x = r(1+D:ntr+D);            % Input signal (received signal)
d = s(1:ntr);                % Desired signal (delayed QPSK signal)
mu = 0.1;                    % Step size
po = 4;                      % Projection order
offset = 0.05;               % Offset for covariance matrix
apf = dsp.AffineProjectionFilter('Length', 32, ...
    'StepSize', mu, 'ProjectionOrder', po, ...
    'InitialOffsetCovariance',offset);
[y,e] = apf(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');
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 
mu = 0.008;                         % Affine Projection filter Step size. 
m  = 5;                             % Decimation factor for analysis
                                    % and simulation results 
apf = dsp.AffineProjectionFilter(l,'StepSize',mu); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(apf,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse));
xlabel('Iteration'); ylabel('MSE (dB)');
title('Learning curve for Affine Projection filter used in system identification')

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

Алгоритмы

Алгоритм аффинной проекции (APA) является адаптивной схемой, которая оценивает неизвестную систему на основе нескольких входных векторов [1]. Он предназначен для улучшения эффективности других адаптивных алгоритмов, в основном тех, которые основаны на LMS. Алгоритм аффинной проекции повторно использует старые данные, приводящие к быстрому сходимости, когда входной сигнал сильно коррелирует, приводя к семейству алгоритмов, которые могут сделать компромиссы между сложностью расчетов со скоростью сходимости [2].

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

Uap(n)=(u(n)u(nL)u(nN)u(nLN))=(u(n)u(n1)u(nL))yap(n)=UTap(n)w(n)=(y(n)···y(nL))dap(n)=(d(n)···d(nL))eap(n)=dap(n)yap(n)=(e(n)···e(nL))w(n)=w(n1)+μUap(n)(UapH(n)Uap(n)+C)1eap

где C является или, I, если начальная ковариация смещения является скалярной, или R, является ли начальная ковариация смещения матричным R. Переменные следующие :

ПеременнаяОписание
nТекущий индекс времени
u (n)Входная выборка на шаге n
U ap (n)Матрица последних L + 1 векторов входного сигнала
w (n)Вектор коэффициентов адаптивного фильтра
y (n)Выход адаптивного фильтра
d (n)Нужный сигнал
e (n)Ошибка на шаге n
LПорядок проекции
NПорядок фильтра (т.е. длина фильтра = N + 1)
μРазмер шага

Ссылки

[1] K. Ozeki, T. Umeda, «Адаптивный алгоритм фильтрации с использованием ортогональной проекции к аффинному подпространству и его свойствам», Electron. Коммун. Jpn. 67-A (5), май 1984, стр. 19-27.

[2] Пауло С. Р. Диниз, адаптивная фильтрация: алгоритмы и практическая реализация, второе издание. Boston: Kluwer Academic Publishers, 2002.

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

.

См. также

Объекты

Введенный в R2013a