exponenta event banner

dsp. AffineProjectionFilter

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

Описание

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

Укажите начальные значения коэффициентов адаптивного фильтра FIR как скаляр или вектор длиной, равной 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

Укажите начальные значения коэффициентов корреляции фильтра FIR как скаляр или вектор длиной, равной 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. Объект System оценивает весовые коэффициенты фильтра, необходимые для минимизации ошибки между выходным сигналом и требуемым сигналом. Вы можете получить доступ к этим коэффициентам, обращаясь к Coefficients свойства объекта. Это можно сделать только после вызова объекта. Например, для доступа к оптимизированным коэффициентам apf фильтр, вызов apf.Coefficients после передачи входного и требуемого сигнала объекту.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Адаптивная коррекция QPSK с использованием фильтра 32-Coefficient FIR (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.

Алгоритмы

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

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

Uap (n) = (u (n)... u (n L) ⋮⋱⋮u (n N) ⋯u (n L N)) = (u (n) u (n 1) ⋯u (n L)) yap (n) = UTap (n) w (n) = (y (n)·· y (n L)) dap (n) =

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

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

Ссылки

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

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

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

.

См. также

Объекты

Представлен в R2013a