реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Реализация LMS для QAM-4
Wanderer.I
сообщение May 18 2011, 13:36
Сообщение #16


Участник
*

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



Вычисления все сложнее становятся, так как C в отличие от Matlab комплексные переменные не поддерживает.
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 18 2011, 15:23
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(Wanderer.I @ May 18 2011, 14:47) *
Мне нужно это реализовать на C( а конвертация из симулинка в C не годится). Первоначально планирую в Matlab написать в виде m файла. А где можно прочесть про реализацию в комплексном виде?

Если нужна скорость обработки, то попробуйте использовать примитивы от Intel + Си компилятор от того же Intel, все это вместе даст СУЩЕСТВЕННЫЙ прирост производительности
Go to the top of the page
 
+Quote Post
alex_os
сообщение May 18 2011, 15:56
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



To Serg76.

Корректор с двумя раздельными каналами для re, im.
И в каждом из каналов коэффициенты корректора вещественные ??


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 18 2011, 16:01
Сообщение #19


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(alex_os @ May 18 2011, 18:56) *
To Serg76.

Корректор с двумя раздельными каналами для re, im.
И в каждом из каналов коэффициенты корректора вещественные ??

да
Go to the top of the page
 
+Quote Post
petrov
сообщение May 18 2011, 16:07
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Serg76 @ May 18 2011, 20:01) *
да


Может чего-то не понимаю, но ИМХО неправильно это, поэтому и вопрос был по конкретной схеме эквалайзера.
Go to the top of the page
 
+Quote Post
alex_os
сообщение May 18 2011, 16:17
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(petrov @ May 18 2011, 20:07) *
Может чего-то не понимаю, но ИМХО неправильно это, поэтому и вопрос был по конкретной схеме эквалайзера.

Присоединяюсь!
Например, ИХ канала h = [1, 0+0.5i] как можно вещественными коэффициентами это скорректировать ?!


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 18 2011, 16:21
Сообщение #22


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(petrov @ May 18 2011, 19:07) *
Может чего-то не понимаю, но ИМХО неправильно это, поэтому и вопрос был по конкретной схеме эквалайзера.

Почему неправильно? При подстройке к-ов корректора для каждого из каналов участвует только одна, соответствующая данному квадратурному каналу, проекция вектора ошибки, а если использовать в корректоре для обоих каналов одну и ту же импульсную характеристику (ИХ), то тогда при расчете к-ов ИХ необходимо учитывать общий вклад проекций ошибок обоих каналов. Вроде так где-то, у меня работали оба варианта

Цитата(alex_os @ May 18 2011, 19:17) *
Присоединяюсь!
Например, ИХ канала h = [1, 0+0.5i] как можно вещественными коэффициентами это скорректировать ?!

Отдельно корректировать мнимую и вещественную часть h
Go to the top of the page
 
+Quote Post
petrov
сообщение May 18 2011, 16:38
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Serg76 @ May 18 2011, 20:21) *
Почему неправильно? При подстройке к-ов корректора для каждого из каналов участвует только одна, соответствующая данному квадратурному каналу, проекция вектора ошибки, а если использовать в корректоре для обоих каналов одну и ту же импульсную характеристику (ИХ), то тогда при расчете к-ов ИХ необходимо учитывать общий вклад проекций ошибок обоих каналов. Вроде так где-то, у меня работали оба варианта


Пусть нам даже известна обратная комплексная ИХ канала, соответственно сворачиваем с ней входной сигнал, не существует таких действительных коэффициентов чтобы при умножении отдельно мнимой и действительной части входного сигнала получить аналогичный результат.
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 18 2011, 16:55
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(petrov @ May 18 2011, 19:38) *
Пусть нам даже известна обратная комплексная ИХ канала, соответственно сворачиваем с ней входной сигнал, не существует таких действительных коэффициентов чтобы при умножении отдельно мнимой и действительной части входного сигнала получить аналогичный результат.

Может не так объясняю, попробую еще раз. Демодулятор построен по квадратурной схеме, в котором для коррекции МСИ используются 2 корректора, один для коррекции в синфазном канале, другой в квадратурном. Подстройка ИХ каждого из каналов осуществляется независимо, по соответствующим проекциям вектора ошибки. Обе эти ИХ в итоге и будут давать общую комплексную ИХ канала. Или я в чем-то неправ?
Go to the top of the page
 
+Quote Post
petrov
сообщение May 18 2011, 17:41
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Serg76 @ May 18 2011, 20:55) *
Может не так объясняю, попробую еще раз. Демодулятор построен по квадратурной схеме, в котором для коррекции МСИ используются 2 корректора, один для коррекции в синфазном канале, другой в квадратурном. Подстройка ИХ каждого из каналов осуществляется независимо, по соответствующим проекциям вектора ошибки. Обе эти ИХ в итоге и будут давать общую комплексную ИХ канала. Или я в чем-то неправ?


Сигнал комплексный, ИХ эквалайхера комплексная, умножаем (a+bi)*(c+di)=(ac-bd)+(bc+ad)i, очевидно что в действительную часть выходного сигнала входит как действительная так и мнимая часть входного, так и в мнимую часть выходного входит как действительная так и мнимая часть входного сигнала, если у вас так значит у вас комплексный эквалайзер.
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 18 2011, 17:56
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Цитата(petrov @ May 18 2011, 20:41) *
Сигнал комплексный, ИХ эквалайхера комплексная, умножаем (a+bi)*(c+di)=(ac-bd)+(bc+ad)i, очевидно что в действительную часть выходного сигнала входит как действительная так и мнимая часть входного, так и в мнимую часть выходного входит как действительная так и мнимая часть входного сигнала, если у вас так значит у вас комплексный эквалайзер.

нет, у меня реализовано как описывает автор топика
Go to the top of the page
 
+Quote Post
Wanderer.I
сообщение May 19 2011, 13:56
Сообщение #27


Участник
*

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



Вот у меня тоже возникли подозрения, что обработка по отдельности квадратур - это неправильно. Так как банальная операция умножения двух комплексных чисел( которая используется в LMS) не равна произведению мнимой и действительной части в отдельности.
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 19 2011, 17:26
Сообщение #28


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



Вот работа демодулятора без корректора (слева) и с "неправильным" корректором (справа) laughing.gif



А вот вариант, когда подстройка осуществляется отдельно по синфазному (слева) и квадратурному каналам (справа)

Go to the top of the page
 
+Quote Post
Wanderer.I
сообщение May 22 2011, 10:37
Сообщение #29


Участник
*

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



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

Данные формулы получены из комплексного представления сигнала.
При реализации в Matlab получается, что всё расходится:
Код
b = [ 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];

x = randint(10000,1,4);
y = modmap(x,1,1,'qask',4);

TXI = y(:,1);
TXQ = y(:,2);

I = conv(TXI, b);
Q = conv(TXQ, b);

%scatterplot(TXI(15:end)+j*TXQ(15:end));

%I = awgn(I,10,'measured');
%Q = awgn(Q,10,'measured');

%scatterplot(I(15:end)+j*Q(15:end));

WI=zeros(55,1);
WQ=zeros(55,1);

mu=0.01;

RX_EQ_I=zeros(1,1);
RX_EQ_Q=zeros(1,1);

RXI = vertcat( zeros(55,1), I(1:end));
RXQ = vertcat( zeros(55,1), Q(1:end));

%компенсация задержки в канале
TXI_D = vertcat( zeros(45,1), TXI );
TXQ_D = vertcat( zeros(45,1), TXQ );

for n=1:5000
    YI=WI'*RXI(n:n+55-1)-WQ'*RXQ(n:n+55-1);
    YQ=WI'*RXQ(n:n+55-1)+WQ'*RXI(n:n+55-1);
    
    
    EI=TXI_D(n)-YI;
    EQ=TXQ_D(n)-YQ;
    
    WI=WI+mu*( EI*RXI(n:n+55-1)-EQ*RXQ(n:n+55-1));
    WQ=WQ+mu*( EI*RXQ(n:n+55-1)+EQ*RXI(n:n+55-1));
    
    RX_EQ_I=[RX_EQ_I YI];
    RX_EQ_Q=[RX_EQ_Q YQ];
    
end

scatterplot(RX_EQ_I(4000:end)+j*RX_EQ_Q(4000:end));


Может я чего-то не так понял?
Go to the top of the page
 
+Quote Post
Serg76
сообщение May 22 2011, 12:51
Сообщение #30


Профессионал
*****

Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775



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

Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 00:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01468 секунд с 7
ELECTRONIX ©2004-2016