dsp.AffineProjectionFilter

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

Описание

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

Отфильтровать каждый канал входа:

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

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

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

Создание

Описание

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

пример

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

пример

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

Свойства

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

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

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

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

Задайте начальные значения коэффициентов корреляции КИХ-фильтра как скаляр или вектор длины, равной ProjectionOrder–1 .

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

Зависимости

Это свойство применимо только если 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 коэффициентами (1 000 итераций)

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;

Примечание: Если вы используете 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')

Алгоритмы

Аффинный алгоритм проекции (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)Адаптивный фильтр выводится
dN Желаемый сигнал
e (n)Ошибка на шаге n
LПорядок проекции
NПорядок фильтра (т.е. длина фильтра = N +1)
μРазмер шага

Ссылки

[1] К. Озеки, T. Умеда, “Адаптивный Алгоритм фильтрации Используя Ортогональную проекцию на Аффинное Подпространство и его Свойства”, Электрон. Commun. Jpn. 67-A (5), май 1984, стр 19–27.

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

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

Смотрите также

Системные объекты

Введенный в R2013a