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

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

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

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

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

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

w(k+1)=w(k)+μe(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 вектор-столбец 1 000 элементов.

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

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

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

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

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

В System Identification КИХ-Фильтра Используя 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')

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

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

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

Смотрите также

Объекты

Похожие темы

Ссылки

[1] Hayes, Монсон Х., Статистическая Цифровая обработка сигналов и Моделирование. Хобокен, NJ: John Wiley & Sons, 1996, pp.493–552.

[2] Haykin, Саймон, адаптивная теория фильтра. Верхний Сэддл-Ривер, NJ: Prentice-Hall, Inc., 1996.