exponenta event banner

Шумоподавление с использованием алгоритма LMS знаковых данных

Когда объем вычислений, необходимых для получения адаптивного фильтра, управляет процессом разработки, вариант sign-data алгоритма LMS (SDLMS) может быть очень хорошим выбором, как показано в этом примере.

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

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

Когда входной сигнал равен нулю, новые коэффициенты совпадают с предыдущим набором.

В векторной форме алгоритм LMS знаковых данных:

w (k + 1) = w (k) + мкэ (k) sgn (x (k)),

где

sgn (x (k)) = {1, x (k) > 00, x (k) = 0-1, x (k) < 0

с вектором w, содержащим веса, применяемые к коэффициентам фильтра, и вектором x, содержащим входные данные. Вектор e представляет собой ошибку между требуемым сигналом и отфильтрованным сигналом. Целью алгоритма SDLMS является минимизация этой ошибки. Размер шага представлен мкМ.

При меньшем λ коррекция весов фильтра становится меньше для каждой выборки, и ошибка SDLMS падает медленнее. Более крупная λ изменяет веса больше для каждого шага, поэтому ошибка падает быстрее, но результирующая ошибка не приближается к идеальному решению так близко. Чтобы обеспечить хорошую скорость схождения и стабильность, выберите λ в следующих практических пределах.

0 < λ < 1N {InputSignalPower},

где N - количество выборок в сигнале. Кроме того, для эффективной обработки данных в качестве мощности, равной двум, следует определить λ.

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

Ряд больших входных значений, связанных с процессом квантования, может привести к росту ошибки за все границы. Сдерживают тенденцию алгоритма знаковых данных выходить из-под контроля, выбирая малый размер шага (μ≪1) и устанавливая начальные условия для алгоритма ненулевыми положительными и отрицательными значениями.

В этом примере шумоподавления установите Method имущество dsp.LMSFilter кому 'Sign-Data LMS'. В этом примере требуется два набора входных данных:

Для сигнала используйте синусоидальную волну. Обратите внимание, что signal является вектором столбца из 1000 элементов.

signal = sin(2*pi*0.055*(0:1000-1)');

Теперь добавьте коррелированный белый шум к signal. Чтобы гарантировать корреляцию шума, пропустите шум через фильтр КИХ нижних частот и затем добавьте отфильтрованный шум к сигналу.

noise = randn(1000,1);
filt = dsp.FIRFilter;
filt.Numerator = fir1(11,0.4);
fnoise = filt(noise);
d = signal + fnoise;

fnoise является коррелированным шумом и d теперь является желаемым входом в алгоритм знаковых данных.

Для подготовки dsp.LMSFilter объект для обработки, установить исходные условия весов фильтра и mu (StepSize). Как отмечалось ранее в этом разделе, значения, установленные для coeffs и mu определить, может ли адаптивный фильтр удалить шум из тракта сигнала.

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

Для этого примера начните с коэффициентов, используемых в шумовом фильтре (filt.Numerator) и слегка модифицируйте их, чтобы алгоритм должен адаптироваться.

coeffs = (filt.Numerator).'-0.01; % Set the filter initial conditions.
mu = 0.05; % Set the step size for algorithm updating.

С требуемыми входными аргументами для dsp.LMSFilter подготовлен, построен объект фильтра LMS, выполнена адаптация и просмотрены результаты.

lms = dsp.LMSFilter(12,'Method','Sign-Data LMS',...
   'StepSize',mu,'InitialConditions',coeffs);
[~,e] = lms(noise,d);
L = 200;
plot(0:L-1,signal(1:L),0:L-1,e(1:L));
title('Noise Cancellation by the Sign-Data Algorithm');
legend('Actual signal','Result of noise cancellation',...
       'Location','NorthEast');
xlabel('Time index')
ylabel('Signal values')

Figure contains an axes. The axes with title Noise Cancellation by the Sign-Data Algorithm contains 2 objects of type line. These objects represent Actual signal, Result of noise cancellation.

Когда dsp.LMSFilter он использует гораздо меньше операций умножения, чем любой из стандартных алгоритмов LMS. Кроме того, выполнение адаптации знаковых данных требует только умножения на битовый сдвиг, когда размер шага равен степени два.

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

Изменение начальных условий веса (InitialConditions) и mu (StepSize) или даже фильтр нижних частот, использованный для создания коррелированного шума, может привести к сбою подавления шума.

См. также

Объекты

Связанные темы

Ссылки

[1] Хейс, Монсон Х., Статистическая цифровая обработка и моделирование сигналов. Хобокен, Нью-Джерси: John Wiley & Sons, 1996, pp.493-552.

[2] Хайкин, Саймон, теория адаптивных фильтров. Река Верхнее Седло, Нью-Джерси: Прентис-Холл, Инк., 1996.