dsp.BlockLMSFilter

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

Описание

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

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

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

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

пример

blms = dsp.BlockLMSFilter(length,blocksize) возвращает адаптивный конечная импульсная характеристика, blms, с Length значение свойства установлено в length и BlockSize значение свойства установлено в blocksize.

пример

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

Свойства

расширить все

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

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

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

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

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

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

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

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

Зависимости

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

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

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

Описание

пример

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

Figure contains 2 axes. Axes 1 with title Noise + Signal contains an object of type line. Axes 2 with title Signal contains an object of type line.

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

Figure contains an axes. The axes with title Learning curve for block LMS filter used in system identification contains an object of type line.

Алгоритмы

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

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

.

См. также

Объекты

Введенный в R2012a