dsp. FilteredXLMSFilter

Фильтрованный фильтр XLMS

Описание

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

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

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

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

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

Создание

Синтаксис

fxlms = dsp.FilteredXLMSFilter
fxlms = dsp.FilteredXLMSFilter(len)
fxlms = dsp.FilteredXLMSFilter(Name,Value)

Описание

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

пример

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

пример

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

Свойства

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

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

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

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

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

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

Типы данных: 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, коэффициенты фильтра не обновляют, и их значения остаются то же самое.

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

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

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

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

Синтаксис

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

Описание

пример

[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, чтобы вычислить отфильтрованный вывод и ошибку фильтра для входа и сигнала, который будет отменен.

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;

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

Примечание: Если вы используете 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, чтобы создать адаптивный фильтр, который использует отфильтрованный-x LMS-алгоритм. Установите длину адаптивного фильтра к 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')

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

Ссылки

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

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

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

Введенный в R2013b