dsp.FilteredXLMSFilter

Фильтрация XLMS-фильтра

Описание

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

Для реализации объекта адаптивной конечной импульсной характеристики фильтра:

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

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

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

Создание

Описание

fxlms = dsp.FilteredXLMSFilter возвращает фильтр filtered-x с наименьшей квадратной конечной импульсной характеристикой адаптивным Системным объектам фильтра, fxlms. Этот Системный объект используется, чтобы вычислить отфильтрованный выход и ошибку фильтра для заданного входного и необходимого сигнала.

пример

fxlms = dsp.FilteredXLMSFilter(len) возвращает FilteredXLMSFilter Системный объект, fxlms, с Length значение свойства установлено в len.

пример

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

Свойства

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

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

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

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

Задайте длину вектора коэффициентов конечной импульсной характеристики фильтра как положительное целое значение. Это свойство неразрывно.

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

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

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

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

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

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

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

Задайте коэффициенты модели фильтра вторичного пути как числовой вектор. Вторичный путь соединяет выход привод и датчик ошибки. Значение по умолчанию является вектором, который представляет коэффициенты фильтра конечной импульсной характеристики lowpass 10-го порядка.

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

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

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

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

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

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

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

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

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

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

Синтаксис

Описание

пример

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

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

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

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

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

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

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

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

Нужный сигнал, d, может быть сигналом переменного размера. Вы можете изменить количество элементов в векторе-столбце, даже когда объект заблокирован. Системный объект блокируется, когда вы вызываете объект, чтобы запустить его алгоритм.

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Сгенерируйте шум, создайте модель системы КИХ-первичного пути, сгенерируйте шум наблюдений, фильтруйте выходные данные модели системы первичного пути с добавлением шума и создайте модель системы КИХ-вторичного пути.

x  = randn(1000,1);
g  = fir1(47,0.4);
n  = 0.1*randn(1000,1);
d  = filter(g,1,x) + n;
b  = fir1(31,0.5);

Используйте dsp.FilteredXLMSFilter Система object™, чтобы вычислить отфильтрованный выход и ошибку фильтра для входа и сигнала, который будет отменен.

mu = 0.008;
fxlms = dsp.FilteredXLMSFilter(32, 'StepSize', mu, 'LeakageFactor', ...
     1, 'SecondaryPathCoefficients', b);
[y,e] = fxlms(x,d);

Постройте график результатов.

plot(1:1000,d,'b',1:1000,e,'r');
title('Active Noise Control of a Random Noise Signal');
legend('Original','Attenuated');
xlabel('Time Index'); ylabel('Signal Value');  grid on;

Figure contains an axes. The axes with title Active Noise Control of a Random Noise Signal contains 2 objects of type line. These objects represent Original, Attenuated.

Идентифицируйте неизвестную систему путем выполнения активного контроля шума с помощью LMS-алгоритма filtered-x. Цель адаптивного фильтра состоит в том, чтобы минимизировать сигнал ошибки между выходом адаптивного фильтра и выходом неизвестной системы (или системы, которая будет идентифицирована). Когда сигнал ошибки минимален, неизвестная система сходится к адаптивному фильтру.

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

Инициализация

Создайте dsp.FIRFilter Системный объект, который представляет систему, которая будет идентифицирована. Передайте сигнал, x, к конечная импульсная характеристика. Выходы неизвестной системы являются желаемым сигналом, d, которая является суммой выходов неизвестной системы (конечная импульсная характеристика) и аддитивного сигнала шума, n.

num = fir1(31,0.5);
fir = dsp.FIRFilter('Numerator',num);  
iir = dsp.IIRFilter('Numerator',sqrt(0.75),...
        'Denominator',[1 -0.5]);
x = iir(sign(randn(2000,25))); 
n = 0.1*randn(size(x));           
d = fir(x) + n;                   

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

Создайте dsp.FilteredXLMSFilter Системный объект для создания адаптивного фильтра, который использует LMS-алгоритм filtered-x. Установите длину адаптивного фильтра равную 32 отводам, размер шага равным 0,008, и коэффициент десятикратного уменьшения для анализа и симуляции равным 5. Переменная simmse представляет ошибку между выходами неизвестной системы, d, и выходы адаптивного фильтра.

l = 32;                         
mu = 0.008;                     
m  = 5;                         
fxlms = dsp.FilteredXLMSFilter(l,'StepSize',mu); 
[simmse,meanWsim,Wsim,traceKsim] = msesim(fxlms,x,d,m);
plot(m*(1:length(simmse)),10*log10(simmse))
xlabel('Iteration')
ylabel('MSE (dB)')
title('Learning curve for Filtered-x LMS filter used in system identification')

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

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

Ссылки

[1] Куо, С.М. и Морган, Д.Р. Активные системы управления шумом: алгоритмы и реализации DSP. Нью-Йорк: John Wiley & Sons, 1996.

[2] Widrow, B. and Stearns, S.D. Адаптивная обработка сигналов. Верхний Седл-Ривер, Нью-Джерси: Prentice Hall, 1985.

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

.
Введенный в R2013b