dsp.FilteredXLMSFilter

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

Описание

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

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

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

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

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

Создание

Описание

fxlms = dsp.FilteredXLMSFilter возвращает отфильтрованный-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

Задайте коэффициенты вторичной модели фильтра пути как числовой вектор. Вторичный путь соединяет выходной привод и ошибочный датчик. Значением по умолчанию является вектор, который представляет коэффициенты КИХ 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, коэффициенты фильтра не обновляются, и их значения остаются то же самое.

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

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

Синтаксис

Описание

пример

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

Идентифицируйте неизвестную систему путем выполнения активного шумового управления с помощью отфильтрованного-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