Перейти к содержанию
    

Реализация LMS для QAM-4

При реализации алгоритма согласно "Adaptive Filter Theory. Simon Naykin":

При реализации в Matlab получается, что всё расходится:

у кого как, у меня все работает ;)

 

ЗЫ. на этом форуме выкладывал разные модельки именно эквалайзеров в симулинке

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у кого как, у меня все работает ;)

 

ЗЫ. на этом форуме выкладывал разные модельки именно эквалайзеров в симулинке

 

Ну не нужно человеку рабочее, наглядное, по десятому разу перетёртое :)

 

Wanderer.I

 

Всё же нужно, ответил в личку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня работают две следующие схемы подстройки коэффициентов и дают практически одинаковый результат

 

image-4941_4DD905F5.jpg

Это Вам повезло с каналом :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это Вам повезло с каналом :).

Это работает в плохих каналах АБГШ, а также в каналах для проводных модемов с плотными сигнальными созвездиями (v.32bis) :laughing:

Изменено пользователем Serg76

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это работает в плохих каналах АБГШ, а также в каналах для проводных модемов с плотными сигнальными созвездиями (v.32bis) :laughing:

два, три луча поставьте или спектральный ноль децибел в 20 ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это работает в плохих каналах АБГШ, а также в каналах для проводных модемов с плотными сигнальными созвездиями (v.32bis) :laughing:

Я бы сказал, что это хорошо работает для каналов, AЧХ которых симметрична относительно несущей и

как-то работает для всех остальных каналов.

Например:

x - последовательность комплексных символов на выходе передатчика;

y - вход корректора;

h = [1, 0.1i] - ИХ канала.

Тогда

y_re(i) = x_re(i) - 0.1 * x_im(i-1)

 

т.е. для приведенной ИХ, если рассматривать квадратуры не зависимо друг от друга,

межсимвольная интерференция выглядит как помеха от квадратурного канала и

ни какими силами ее не возможно отфильтровать .

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

два, три луча поставьте или спектральный ноль децибел в 20 ;)

На многолучевке не проверял, поэтому ничего сказать не могу, но вскоре такой шанс представится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы сказал, что это хорошо работает для каналов, AЧХ которых симметрична относительно несущей и

как-то работает для всех остальных каналов.

Например:

x - последовательность комплексных символов на выходе передатчика;

y - вход корректора;

h = [1, 0.1i] - ИХ канала.

Тогда

y_re(i) = x_re(i) - 0.1 * x_im(i-1)

 

т.е. для приведенной ИХ, если рассматривать квадратуры не зависимо друг от друга,

межсимвольная интерференция выглядит как помеха от квадратурного канала и

ни какими силами ее не возможно отфильтровать .

Т.е. к примеру качестве модели канала, лучше использовать фильтр с комплексной импульсной характеристикой и чтобы комплексная часть и мнимые не совпадали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. к примеру качестве модели канала, лучше использовать фильтр с комплексной импульсной характеристикой и чтобы комплексная часть и мнимые не совпадали?

 

Разумеется в реальной жизни лучи имеют произвольный сдвиг фаз друг относительно друга.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. к примеру качестве модели канала, лучше использовать фильтр с комплексной импульсной характеристикой и чтобы комплексная часть и мнимые не совпадали?

Конечно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот только после изучения всего добра, всё равно не заработало ничего, всё расходится. :( Шаг я так понимаю 0.01 вполне нормальный.А вот неправильный вариант успешно работает. То ли дело в том что импульсная характеристика канала для мнимой и действительной части у меня одинаковая. Буду дальше экспериментировать с несимметричной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Wanderer.I:

Вот только после изучения всего добра, всё равно не заработало ничего, всё расходится. sad.gif Шаг я так понимаю 0.01 вполне нормальный.

 

Конечно, правильным является использование комплексного алгоритма.

Не надо забывать, что либо e, либо u должны быть комплексно сопряженные в формуле пересчета коэффициентов.

Что касается шага - он вообще говоря, зависит от длины фильтра. Советую использовать nlms, где в качестве шага используется величина = 1/(сумма квадратов значений линии задержки).

Изменено пользователем thermit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно, правильным является использование комплексного алгоритма.

Не надо забывать, что либо e, либо u должны быть комплексно сопряженные в формуле пересчета коэффициентов.

Что касается шага - он вообще говоря, зависит от длины фильтра. Советую использовать nlms, где в качестве шага используется величина = 1/(сумма квадратов значений линии задержки).

Конечно NLMS лучше, но мне нужен конкретно LMS просто. Вот что у меня получилось для BPSK:

1227300.jpg

Однако стоит только помять сигнал на КАМ-4,всё сразу ломается(импульсная характеристика расходится). Смотрел я примеры, но в чём разница не пойму. Может ли проблема быть в модели канала? Что ещё может быть я не знаю. :wacko:

lms_test.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

To Wanderer.I

Нужно сделать примерно так

1. Включить режим QAM4, h = [1, 0], w- все нули в середине единица.

2 Добиться работы в этих условиях. На начальном этапе адаптацию можно выключить

и убедится что e получается равной нулю. Потом включить адаптацию и убедится

что не разваливается.

3. Поставить h = [1, 0.2j] и убедится что корректор работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то вроде этого должно быть:

 

clear all;
c4=[1+j -1+j 1-j -1-j];
HI = [ 0.00001   0.0004    0.0002   -0.0010    0.0010        0.0039      -0.0120 ...
      -0.0300    -0.1800  -0.1000   -0.0300    0.0020        0.0200       0.0500 ...
       0.0950    -0.0200  -0.3500   -0.3000   -0.1000        0.3970       0.3500 ...
      -0.0300    -0.1800  -0.0223   -0.0100    0.0000205     -0.00000039 -0.000000017...
       0.000001   0.00000008];
   
HR = [ 0.00001   0.0008    0.0002   -0.0010    0.0010        0.0039      -0.0120 ...
      -0.0300    -0.1900   0.1000   -0.0300    0.0020        0.0200       0.0500 ...
       0.0950    -0.0200  -0.3500   -0.3400   -0.1000        0.470       0.3500 ...
      -0.0300    -0.1800  -0.0223   -0.0100    0.000205      0.00000039  -0.000000117...
       0.000001   0.00000008];

EL=60;
NP=4;
tx=c4(randint(1,10000,NP)+1);

h=complex(HR,HI);


rx=filter(h,1,tx);

u=0.5/(EL*std(rx)^2);
y=lms([zeros(1,(length(h)/2)+EL/2) tx],rx,EL,u);

plot(y(5000:end),'.');

 

 

 

lms.m

function cs = lms(r,t,N,mu)

mem=zeros(1,N);
coeff=zeros(N,1);
cs=[];
for i=1:length(t)
    mem=[t(i) mem(1:end-1)];
    ms=mem*coeff;
    e=r(i)-ms;
    cs=[cs ms];
    coeff=coeff+mem'*mu*e;
end;

return;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...