dsp. BlockLMSFilter

Вычислите вывод, ошибку и веса с помощью блока LMS адаптивный алгоритм

Описание

Система dsp.BlockLMSFilter object™ вычисляет вывод, ошибку и веса с помощью блока LMS адаптивный алгоритм.

Вычислить вывод, ошибку и веса:

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

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

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

Создание

Синтаксис

blms = dsp.BlockLMSFilter
blms = dsp.BlockLMSFilter(length,blocksize)
blms = dsp.BlockLMSFilter(Name,Value)

Описание

blms = dsp.BlockLMSFilter возвращает адаптивный КИХ-фильтр, blms, который фильтрует входной сигнал и вычисляет веса фильтра на основе алгоритма наименьшее количество средних квадратичных (LMS) блока.

пример

blms = dsp.BlockLMSFilter(length,blocksize) возвращает адаптивный КИХ-фильтр, blms, с набором свойств Length к length и набором свойств BlockSize к blocksize.

пример

blms = dsp.BlockLMSFilter(Name,Value) возвращает адаптивный КИХ-фильтр, blms, с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки. Незаданные свойства имеют значения по умолчанию.

Свойства

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

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

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

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

Задайте длину КИХ-вектора весов фильтра как положительный целочисленный скаляр.

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

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

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

Задайте источник фактора размера шага адаптации как Property или Input port.

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

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

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство StepSizeSource на 'Property'.

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

Задайте фактор утечки, используемый в текучем LMS-алгоритме в качестве скалярного числового значения между 0 и 1, оба включительно. Когда значение является меньше, чем 1, Системный объект реализует текучий LMS-алгоритм. Значением по умолчанию является 1, не обеспечивая утечки в адаптирующемся алгоритме.

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

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

Задайте начальные значения весов фильтра как скаляр или вектор длины, равной значению свойства Длины.

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

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

Задайте, может ли КИХ-фильтр сбросить веса фильтра. По умолчанию значением этого свойства является false, и объект не сбрасывает веса. Когда это свойство установлено в true, вход управления сбросом предоставляется методу step, и свойство WeightsResetCondition применяется. Объект сбрасывает веса фильтра на основе значений свойства WeightsResetCondition и входа сброса к объектному алгоритму.

Задайте событие, чтобы сбросить веса фильтра как один из Rising edge, Falling edge, Either edge или Non-zero. Объект сбрасывает веса фильтра на основе значений этого свойства и входа сигнала сброса к объектному алгоритму.

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство WeightsResetInputPort на true.

Установите это свойство на true выводить адаптированные веса фильтра. Значением по умолчанию является true.

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

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

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

Синтаксис

[y,err,wts] = blms(x,d)
[y,err] = blms(x,d)
[___] = blms(x,d,mu)
[___] = blms(x,d,a)
[___] = blms(x,d,r)
[y,err,wts] = blms(x,d,mu,a,r)

Описание

пример

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

[y,err] = blms(x,d) возвращает только отфильтрованный вывод y и ошибку фильтра err, когда свойством WeightsOutputPort является false.

[___] = blms(x,d,mu) mu использования как размер шага, когда вы устанавливаете свойство StepSizeSource на Input port. Эти входные параметры могут использоваться с любым из предыдущих наборов выходных аргументов.

[___] = blms(x,d,a) a использования как управление адаптацией, когда вы устанавливаете свойство AdaptInputPort на true. Когда a является ненулевым, фильтр постоянно обновляет веса фильтра. Когда a является нулем, веса фильтра остаются постоянными.

[___] = blms(x,d,r) r использования как сброс сигнализирует, когда вы устанавливаете свойство WeightsResetInputPort на true. Используйте свойство WeightsResetCondition установить триггерное условие сброса. Если событие сброса имеет место, фильтр сбрасывает веса фильтра к их начальным значениям.

[y,err,wts] = blms(x,d,mu,a,r) вход x фильтров, с помощью d в качестве желаемого сигнала, mu как размер шага, a как управление адаптацией и r как сигнал сброса. Объект возвращает отфильтрованный вывод y, ошибка фильтра err и адаптированные веса фильтра wts. Установите свойства соответственно обеспечивать все возможные входные параметры.

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

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

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

Входная длина должна быть целочисленным кратным значение свойства BlockSize.

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

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

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

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

Фактор размера шага адаптации, заданный как скаляр, неотрицательное числовое значение. Тип данных входа размера шага должен совпадать с типом данных x и d.

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

Зависимости

Это свойство применяется только, когда вы устанавливаете свойство StepSizeSource на 'Input port'.

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

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

Зависимости

Этот вход требуется, когда свойство AdaptInputPort установлено в true.

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

Сбросьте сигнал, который сбрасывает веса фильтра на основе значений свойства WeightsResetInputPort.

Зависимости

Этот вход требуется, когда свойство WeightsResetInputPort установлено в true.

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

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

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

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

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

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

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

Адаптивные веса фильтра, возвращенные как скаляр или вектор-столбец длины, заданы значением в свойстве Length.

Тип данных wts совпадает с типом данных y.

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

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

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

release(obj)

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

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

Примеры

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

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

 blms = dsp.BlockLMSFilter(10,5);
 blms.StepSize = 0.01;
 blms.WeightsOutputPort = false;
 filt = dsp.FIRFilter;
 filt.Numerator = fir1(10,[.5, .75]);
 x = randn(1000,1); % Noise
 d = filt(x) + sin(0:.05:49.95)'; % Noise + Signal
 [y, err] = blms(x, d);
 subplot(2,1,1);
 plot(d);
 title('Noise + Signal');
 subplot(2,1,2);
 plot(err);
 title('Signal');

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

fir = fir1(31,0.5);
firFilter = dsp.FIRFilter('Numerator',fir); % FIR system to be identified 
iirFilter = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iirFilter(sign(randn(2000,25))); 
n = 0.1*randn(size(x));             % Observation noise signal 
d = firFilter(x)+n;                   % Desired signal 
l = 32;                             % Filter length 
mu = 0.008;                         % Block LMS Step size. 
m  = 32;                            % Decimation factor for analysis
                                    % and simulation results 
fir = dsp.BlockLMSFilter(l,'StepSize',mu); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(fir,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse));
xlabel('Iteration'); ylabel('MSE (dB)');
title('Learning curve for block LMS filter used in system identification')

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока Block LMS Filter. Свойства объектов соответствуют параметрам блоков.

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

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

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

Представленный в R2012a