dsp. AffineProjectionFilter

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

Описание

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

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

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

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

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

Создание

Синтаксис

apf = dsp.AffineProjectionFilter
apf = dsp.AffineProjectionFilter(len)
apf = dsp.AffineProjectionFilter(Name,Value)

Описание

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 | логический

Задайте начальные значения КИХ адаптивные коэффициенты фильтра как скаляр или вектор длины, равной значению свойства 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

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

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

Зависимости

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

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

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

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

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

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

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

Синтаксис

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

Описание

пример

[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