Выводы
Проделанная работа показала, что алгоритм LMS неплохо справляется как со стационарным сигналом, так и с сигналом с изменяющимися характеристиками. Алгоритм RLS в «чистом» виде дает отличные результаты по стационарному сигналу, однако с изменением характеристик системы справиться не способен. Алгоритм RLS с экспоненциальным забыванием отлично справляется с обоими вышеперечисленными сигналами и показывает гораздо меньший переходный процесс и меньшую ошибку по сравнению с остальными рассмотренными алгоритмами.
Однако не стоит забывать, что RLS алгоритмы требуют гораздо больше вычислительных мощностей, чем LMS (2,5N2+4N пар операций «умножение-сложение» по сравнению с N + 1 пар операций на каждом шаге для LMS).
Соответственно, можно сделать вывод, что для случаев, не требующих высокой точности, удобнее всего использовать алгоритм LMS. Если же требуется высокая точность и достаточно вычислительных мощностей, лучше подойдут RLS-алгоритмы. Кроме того, нужно помнить, что RLS-алгоритм в «чистом» виде можно применять только в системах со стационарным сигналом. Если же характер сигнала может меняться, необходимо использовать RLS-алгоритм с экспоненциальным забыванием.
Приложения
Приложение 1
Реализация адаптивных фильтров в MATLAB
Для начала формируем входной и выходной сигналы идентифицируемой системы:
x=randn(2000,1); %дискретный белый гауссов шум
t=0:31;
b=exp(-t/5).*cos(t*pi/2); % импульсная характеристика системы
% генерируем первую половину выходного сигнала
[y(1:1000), state] = filter(b, 1, x(1:1000));
% генерируем вторую половину выходного сигнала
y(1001:2000) = filter(-b, 1, x(1001:2000), state);
Далее создадим объекты адаптивных фильтров с помощью соответствующих конструкторов. Для LMS-алгоритма предварительно рассчитаем значение коэффициента м, выбрав его в два раза меньшим предельного значения, определяемого формулой (15), а для RLS-алгоритма с экспоненциальным забыванием возьмем л=0,6. Для всех остальных параметров используем значение по умолчанию:
%создаем объекты LMS- и RLS-адаптивных фильтров
N = 32; % длина фильтров
mu = 1/N/var(y); %размер шага для LMS
ha_lms = adaptfilt.lms(N,mu); % создание объекта для LMS
ha_rls = adaptfilt.rls(N); % создание объекта для RLS
ha_erls = adaptfilt.rls(N,0.6); % создание объекта для RLS с экспоненциальным забыванием
Теперь реализуем фильтрацию с помощью функции filter. В соответствии с рис.2, а входной сигнал адаптивного фильтра совпадает с входным сигналом исследуемой системы (x), а образцовый сигнал -- это выходной сигнал системы (y):
%реализуем фильтрацию:
[y_lms, e_lms] = filter(ha_lms, x, y);
[y_rls, e_rls] = filter(ha_rls, x, y);
[y_erls, e_erls] = filter(ha_erls, x, y);
Теперь построим импульсную характеристику системы (рис.3) и графики зависимости сигнала ошибки от времени, а также выведем на экран импульсные характеристики фильтров, полученные на момент завершения обработки сигнала (рис.4):
% строим графики:
subplot(3,2,1)
plot(e_lms)
title(LMS error)
axis([0 2000 -6 6])
subplot(3,2,2)
impz(ha_lms.coefficients)
title(LMS impulse response)
subplot(3,2,3)
plot(e_rls)
title(RLS error)
axis([0 2000 -6 6])
subplot(3,2,4)
impz(ha_rls.coefficients)
title(RLS impulse response)
axis([0 N -1 1])
subplot(3,2,5)
plot(e_erls)
title(eRLS error)
axis([0 2000 -6 6])
subplot(3,2,6)
impz(ha_erls.coefficients)
title(eRLS impulse response)
subplot(4,2,8)
impz(b)
title(System impulse response)
Библиографический список
1. Сергиенко А.Б. Цифровая обработка сигналов.-- 3-е изд. -- СПб.: БХВ-Петербург, 2011. -- 768 с.
2. Хайкин С. Нейронные сети. Полный курс. -- М.: Вильямс, 2006. -- 1104 с.
3. Адаптивные фильтры: Пер. С англ./[Под ред. К.Ф.Н.Коуэнам и П.М.Гранта]. -- М.: Мир, 1988. -- 392 с.
4. Шахтарин Б.И. Случайные процессы в радиотехнике: Цикл лекций. -- М.: Радио и связь, 2000. -- 584 с.
5. Основы цифровой обработки сигналов: Курс лекций / А.И.Солонина, Д.А.Улахович, С.М.Арбузов, Е.Б.Соловьева . -- 2-е изд., перераб. и испр. -- Спб.: БХВ-Петербург, 2005. -- 768 с.
6. Солонина А.И. Цифровая обработка сигналов. Моделирование в MATLAB / А.И.Солонина, С.М. Арбузов. -- Спб.: БХВ-Петербург, 2008. -- 816 с.
7. Джиган В. Адаптивные фильтры. Современные средства моделирования и примеры реализации. / В.Джиган // Электроника: наука технология бизнес. -- 2012. -- №7(00121). -- С. 106-125.
8. Сеогиенко А.Б. Алгоритмы адаптивной фильтрации: особенности реализации в MATLAB. / А.Б.Сергиенко // Exponenta Pro. -- 2003. -- №1(1). -- С. 18-28.