|
|
  |
Реализация LMS для QAM-4 |
|
|
|
May 23 2011, 06:10
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Serg76 @ May 23 2011, 09:44)  Это работает в плохих каналах АБГШ, а также в каналах для проводных модемов с плотными сигнальными созвездиями (v.32bis)  Я бы сказал, что это хорошо работает для каналов, AЧХ которых симметрична относительно несущей и как-то работает для всех остальных каналов. Например: x - последовательность комплексных символов на выходе передатчика; y - вход корректора; h = [1, 0.1i] - ИХ канала. Тогда y_re(i) = x_re(i) - 0.1 * x_im(i-1) т.е. для приведенной ИХ, если рассматривать квадратуры не зависимо друг от друга, межсимвольная интерференция выглядит как помеха от квадратурного канала и ни какими силами ее не возможно отфильтровать .
--------------------
ну не художники мы...
|
|
|
|
|
May 23 2011, 07:51
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 23-10-07
Пользователь №: 31 658

|
Цитата(alex_os @ May 23 2011, 10:10)  Я бы сказал, что это хорошо работает для каналов, AЧХ которых симметрична относительно несущей и как-то работает для всех остальных каналов. Например: x - последовательность комплексных символов на выходе передатчика; y - вход корректора; h = [1, 0.1i] - ИХ канала. Тогда y_re(i) = x_re(i) - 0.1 * x_im(i-1)
т.е. для приведенной ИХ, если рассматривать квадратуры не зависимо друг от друга, межсимвольная интерференция выглядит как помеха от квадратурного канала и ни какими силами ее не возможно отфильтровать . Т.е. к примеру качестве модели канала, лучше использовать фильтр с комплексной импульсной характеристикой и чтобы комплексная часть и мнимые не совпадали?
|
|
|
|
|
May 23 2011, 08:22
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Wanderer.I @ May 23 2011, 11:51)  Т.е. к примеру качестве модели канала, лучше использовать фильтр с комплексной импульсной характеристикой и чтобы комплексная часть и мнимые не совпадали? Конечно!
--------------------
ну не художники мы...
|
|
|
|
|
May 23 2011, 08:35
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 23-10-07
Пользователь №: 31 658

|
Вот только после изучения всего добра, всё равно не заработало ничего, всё расходится.  Шаг я так понимаю 0.01 вполне нормальный.А вот неправильный вариант успешно работает. То ли дело в том что импульсная характеристика канала для мнимой и действительной части у меня одинаковая. Буду дальше экспериментировать с несимметричной.
|
|
|
|
|
May 23 2011, 10:25
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Wanderer.I: Вот только после изучения всего добра, всё равно не заработало ничего, всё расходится. sad.gif Шаг я так понимаю 0.01 вполне нормальный. Конечно, правильным является использование комплексного алгоритма. Не надо забывать, что либо e, либо u должны быть комплексно сопряженные в формуле пересчета коэффициентов. Что касается шага - он вообще говоря, зависит от длины фильтра. Советую использовать nlms, где в качестве шага используется величина = 1/(сумма квадратов значений линии задержки).
Сообщение отредактировал thermit - May 23 2011, 10:27
|
|
|
|
|
May 23 2011, 20:44
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 23-10-07
Пользователь №: 31 658

|
Цитата(thermit @ May 23 2011, 14:25)  Конечно, правильным является использование комплексного алгоритма. Не надо забывать, что либо e, либо u должны быть комплексно сопряженные в формуле пересчета коэффициентов. Что касается шага - он вообще говоря, зависит от длины фильтра. Советую использовать nlms, где в качестве шага используется величина = 1/(сумма квадратов значений линии задержки). Конечно NLMS лучше, но мне нужен конкретно LMS просто. Вот что у меня получилось для BPSK:  Однако стоит только помять сигнал на КАМ-4,всё сразу ломается(импульсная характеристика расходится). Смотрел я примеры, но в чём разница не пойму. Может ли проблема быть в модели канала? Что ещё может быть я не знаю.
lms_test.rar ( 1000 байт )
Кол-во скачиваний: 89
|
|
|
|
|
May 24 2011, 10:24
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Что-то вроде этого должно быть: Код 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;
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|