dsp. AdaptiveLatticeFilter

Адаптивный фильтр решетки

Описание

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

Реализовывать адаптивный КИХ-объект фильтра:

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

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

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

Создание

Синтаксис

alf = dsp.AdaptiveLatticeFilter
alf = dsp.AdaptiveLatticeFilter(len)
alf = dsp.AdaptiveLatticeFilter(Name,Value)

Описание

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

пример

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

пример

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

Свойства

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

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

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

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

Задайте значение смещения для знаменателя термина нормализации 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 | логический

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

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

Зависимости

Это свойство применяется, только если свойство Method установлено to'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'.

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

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

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

Синтаксис

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

Описание

пример

[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);

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

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');

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

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 
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')

Ссылки

[1] Гриффитс, Ллойд Дж. “Постоянно Адаптивный Фильтр, Реализованный как Структура решетки”. Продолжения Конференции Int IEEE по Акустике, Речи, и Обработке сигналов, Хартфорду, CT, стр 683–686, 1977.

[2] Haykin, S. Адаптивная теория фильтра, 4-й Эд. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1996.

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

Введенный в R2013b