Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выравнивание канала для QAM16
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
tim_s80
Как правильно эквалайзить (слепым подходом) сигнал, представленный по сылке, T/2, QAM16
Нажмите для просмотра прикрепленного файла

Пробовал СМА, но бестолку.
Или такой случай бесперспективен? Если бесперпективен, то по каким внешним признакам это можно оценить?
alex_os
Цитата(tim_s80 @ Dec 24 2011, 18:17) *
Как правильно эквалайзить (слепым подходом) сигнал, представленный по сылке, T/2, QAM16
Нажмите для просмотра прикрепленного файла

Пробовал СМА, но бестолку.
Или такой случай бесперспективен? Если бесперпективен, то по каким внешним признакам это можно оценить?

На глаз вроде все не очень плохо. А сигнал это и есть весь или он длиннее может быть? CMA медленно сходится
может поэтому не получилось, попробуйте на большей выборке. Или "stop and go" можно попробовать, но там нужно
фазу выровнять.
tim_s80
Цитата(alex_os @ Dec 24 2011, 19:09) *
На глаз вроде все не очень плохо. А сигнал это и есть весь или он длиннее может быть? CMA медленно сходится
может поэтому не получилось, попробуйте на большей выборке. Или "stop and go" можно попробовать, но там нужно
фазу выровнять.



На всякий случай
Нажмите для просмотра прикрепленного файла
раз в 10 более


Исодные отсчеты, без тактирования и коррекции несущей, вдруг я на этих этапах косячу
Нажмите для просмотра прикрепленного файла
tim_s80
На этой выборке вроде бы удалось получить выход методом CMA, но при бешенном порядке эквалайзера.
Но на выходе не QAM16 получилось.
При слепом варианте если получился QAM большего порядка этому можно доверять или при определенных настройках СМА можно свести к любому QAM?
Ну и зараза очень чуствителен выход от правильного выбора шага адаптации.

В общем, то что у меня получился QAM больше 16 это на самом деле в этих отсчетах, или это глюки не совсем оптимального слепого алгоритма на основе СМА?

Нажмите для просмотра прикрепленного файла

des00
CMA в топку. Делайте Годдарда/ММА/SMMA + DD (direct decision). переключение между ними делайте по mse, область переключения когда mse лежит в пределах половины области нахождения жесткого решения(точки).
tim_s80
Цитата(des00 @ Dec 25 2011, 15:30) *
CMA в топку. Делайте Годдарда/ММА/SMMA + DD (direct decision). переключение между ними делайте по mse, область переключения когда mse лежит в пределах половины области нахождения жесткого решения(точки).


А СМА и Годдар разве по сути не одно и тоже?
des00
Цитата(tim_s80 @ Dec 25 2011, 06:41) *
А СМА и Годдар разве по сути не одно и тоже?

Да, но я указал вам использовать два различных переключаемых детектора. В своих модемах я использую MMA+DD. Мне это нравится больше чем Goddard + DD. SMMA хорошо, но дорого по ресурсу.

ЗЫ. знаковые версии годдара/мма/смма лучше не использовать %) где то на форуме есть тема про эквалайзеры, я там перебирал 7-9 алгоритмов адаптации (в том числе Stop&Go, который иногда приводят с ошибкой, про это я в той теме тоже писал) поищите.
tim_s80
Цитата(des00 @ Dec 25 2011, 16:00) *
Да, но я указал вам использовать два различных переключаемых детектора. В своих модемах я использую MMA+DD. Мне это нравится больше чем Goddard + DD. SMMA хорошо, но дорого по ресурсу.

ЗЫ. знаковые версии годдара/мма/смма лучше не использовать %) где то на форуме есть тема про эквалайзеры, я там перебирал 7-9 алгоритмов адаптации (в том числе Stop&Go, который иногда приводят с ошибкой, про это я в той теме тоже писал) поищите.



Попробовал ММА, в принципе большго отличия от СМА пока не заметил за исключением того, что созвездие ставит ровно. Требуемый порядок эквалайзера, время схождения вроде бы те же.
des00
Цитата(tim_s80 @ Dec 25 2011, 11:41) *
Попробовал ММА, в принципе большго отличия от СМА пока не заметил за исключением того, что созвездие ставит ровно. Требуемый порядок эквалайзера, время схождения вроде бы те же.

я же писал, используйте ДВА детектора. Если брать слепые алгоритмы, ИМХО, то лучшее качество, по критерию остаточного mse, вы получите только на DD детекторе. К нему приближается SMMA. Все остальное нужно только в том случае, когда DD детектору доверять нельзя.

Зы. нужна быстрая сходимость ? делайте не слепой эквалайзер или RLS или ортогонализируйте входные данные через ортогональные преобразования.
tim_s80
Цитата(des00 @ Dec 26 2011, 06:26) *
или ортогонализируйте входные данные через ортогональные преобразования.


Можно здесь немного прояснить.
Ортогонализация, отбеливание, раскорреляция - это все одно и тоже?

ДПФ это есть частный случай ортогонализации?
des00
Цитата(tim_s80 @ Dec 26 2011, 04:16) *
Можно здесь немного прояснить.
Ортогонализация, отбеливание, раскорреляция - это все одно и тоже?

хмм, последние два термина слышу впервые, хотя и понимаю о чем речь %)

Да это все из одной области. Если посмотреть формулу Винера, которая описывает решение задачи эквализации, то там есть обращение матрицы входных отсчетов. Оно же явно или неявно присутствует в выводе различных алгоритмов адаптации. Поэтому крайне желательно чтобы матрица не вырождалась, а этого можно достичь тогда, когда входные отсчеты статистически независимы (во многих книгах написано еще и в каком смысле независимы). Поэтому любые процедуры, способствующие этому для эквалайзера благо.
Цитата
ДПФ это есть частный случай ортогонализации?

да, есть эквалайзеры работающие в частном домене через прямое и обратное ДПФ.
tim_s80
Цитата(des00 @ Dec 26 2011, 13:38) *
хмм, последние два термина слышу впервые, хотя и понимаю о чем речь %)

Да это все из одной области. Если посмотреть формулу Винера, которая описывает решение задачи эквализации, то там есть обращение матрицы входных отсчетов. Оно же явно или неявно присутствует в выводе различных алгоритмов адаптации. Поэтому крайне желательно чтобы матрица не вырождалась, а этого можно достичь тогда, когда входные отсчеты статистически независимы (во многих книгах написано еще и в каком смысле независимы). Поэтому любые процедуры, способствующие этому для эквалайзера благо.

да, есть эквалайзеры работающие в частном домене через прямое и обратное ДПФ.


Тогда что получается, что после ортогонализации (частный случай есть ДПФ) я уже не могу применять класс алгоритмов СМА, а так как по сути перехожу в некий ортогональный базис (в частном случае в частотный) должен что-то другое применять?
des00
Цитата(tim_s80 @ Dec 26 2011, 04:51) *
Тогда что получается, что после ортогонализации (частный случай есть ДПФ) я уже не могу применять класс алгоритмов СМА, а так как по сути перехожу в некий ортогональный базис (в частном случае в частотный) должен что-то другое применять?

смотря какой метод ортогонализации (временной, частотный) вы используете и в каком базире работате (временном, частотном).

CMA алгоритм это метод вычисления ошибки, основанный на вычислениях во временной области
tim_s80
Цитата(des00 @ Dec 26 2011, 14:00) *
смотря какой метод ортогонализации (временной, частотный) вы используете и в каком базире работате (временном, частотном).

CMA алгоритм это метод вычисления ошибки, основанный на вычислениях во временной области


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

И не подскажите ли название метода ортогонализации во временной области, после которой можно также будет применить что-нибудь из класса СМА?
des00
Цитата(tim_s80 @ Dec 26 2011, 05:14) *
Если я ухожу в некий ортогональный базис (например из временной области в частотную), то я получаю некоррелированные отсчеты в новом (ортогональном) базисе, т.е. я выполнил ортогонализацию Из него я могу обратным преобразованием получить один в один исходный сигнал.
Если же я делаю что-то такое (ортогонализирую во временной области), что у меня во временной области нарушается имеющаяся независимость отсчетов, то формально я искажию имеющиеся входные данные - это разве допустимо, вначале исказить, а потом пытаться эквалайзить?

боюсь вас увести не в ту область, т.к. вплотную занимался сим вопросом года полтора назад. поищите документы на тему Transfom Domain Equalizers, сейчас глянул свою библиотеку, по диагонали не нашел нужную доку. Насчет Frequency Domain неплохо у хайкина написано.

Цитата
И не подскажите ли название метода ортогонализации во временной области, после которой можно также будет применить что-нибудь из класса СМА?

Например дискретное преобразование Адамара. На этом форуме есть тема, где уважаемый petrov выкладывал модель такого эквалайзера. Делал эквалайзер с адамаром, сходится быстрее чем классический.
tim_s80
Цитата(des00 @ Dec 26 2011, 14:34) *
боюсь вас увести не в ту область, т.к. вплотную занимался сим вопросом года полтора назад. поищите документы на тему Transfom Domain Equalizers, сейчас глянул свою библиотеку, по диагонали не нашел нужную доку. Насчет Frequency Domain неплохо у хайкина написано.


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


Пощупаю по данным ключевым словам.

Но позвольте еще один вопрос задать. Чуть выше Вы приводили связку SMMA и DD. Но в
y_re*(y_re^2 - a_re^c*R_re) + j*y_im*(y_im^2 - a_im^c*cR_im), где а - это оценки по квадратурам текущего символа. Разве это не есть по сути единение MMA и DD, какой смысл еще раз DD на выходе включать?
Далее, если у меня в начале квадрат стоит с неким наклоном, то применение оценок сигнала можно применять или надо правдами неправдами квадрат в начале выравнивать?
Ну и -с- из каких соображений выбирается?
des00
Цитата(tim_s80 @ Dec 26 2011, 06:09) *
Но позвольте еще один вопрос задать. Чуть выше Вы приводили связку SMMA и DD. Но в
y_re*(y_re^2 - a_re^c*R_re) + j*y_im*(y_im^2 - a_im^c*cR_im), где а - это оценки по квадратурам текущего символа. Разве это не есть по сути единение MMA и DD, какой смысл еще раз DD на выходе включать?

Вы правы, я делал для ПЛИС и дело было в ресурсе, при ограниченной разрядности вычислений, в установившемся режиме DD дает лучший результат чем SMMA (думаю что это очевидно %)).
Цитата
Далее, если у меня в начале квадрат стоит с неким наклоном, то применение оценок сигнала можно применять или надо правдами неправдами квадрат в начале выравнивать?

про наклон ничего не понял. вы имеете в виду перекос спектра ? Короткие линейные эквалайзеры ИМХО плохо его компенсируют (а TSE тем более).
Цитата
Ну и -с- из каких соображений выбирается?

хмм, поднял свои наработки, я использовал c = 0.5. Если мне память не изменяет выбирал ее исходя из ошибки в установившемся режиме/скорости схождения.
tim_s80
Цитата(des00 @ Dec 26 2011, 15:23) *
про наклон ничего не понял. вы имеете в виду перекос спектра ?


Не совсем точно выразился. Речь идет о квадрате созвездия, который на начальном этапе повернут, т.е. стороны квадрата созвездия не параллельны сторонам опорного созвездия.
des00
Цитата(tim_s80 @ Dec 26 2011, 06:41) *
Не совсем точно выразился. Речь идет о квадрате созвездия, который на начальном этапе повернут, т.е. стороны квадрата созвездия не параллельны сторонам опорного созвездия.

т.е., как я понимаю, у вас есть нескомпенсированный фазовый сдвиг созвездия. Для настройки эквалайзера это не принципиально(особенно для слепых методов основанных на статистиках высоких порядков).

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

И экспиремента ради делал FSE эквалайзер, который работал интерплятором Фэрроу в петле по тактовой %)
tim_s80
При рассмотрении варианта DD-LMS встретился такой подход

...
if (abs(e(k)) < 0.5)
w(k+1,sm.gif = w(k,sm.gif + 2*mu * abs(e(k))^2 * e(k)' * X(k,sm.gif;
else
w(k+1,sm.gif = w(k,sm.gif + 2*mu * e(k)' * X(k,sm.gif;
end
...

т.е. в зависимости от величины текущей ошибки используется либо
abs(e(k))^2 * e(k)'
либо
просто e(k)'

Прояснмие кто могкт в чем суть данного явления?
des00
Цитата(tim_s80 @ Dec 28 2011, 00:40) *
Прояснмие кто могкт в чем суть данного явления?

Динамически изменяемый mu. Быстрый вход в захват и маленькая СКО в стационарном режиме. ИМХО в данном случае что-то вида шаманства, лучше тогда уж лучше NLMS реализовать.

ЗЫ. Вы если что интересное, по этой теме, нароете выкладывайте сюда. Если вам не затруднит конечно.

ЗЗЫ. для FPGA не самый хороший вариант, т.к.
1. раздувается разрядность квадрата, так что выхлоп в mu от нее маленький будет.
2. для mu требуется умножитель, что при паралельном обновлении даст увеличение кол-ва умножителей на два порядка фильтра.
tim_s80
Всех с наступившим!

Появились следующие вопросы.

1. Предположим на неком фрагменте сигнала был прогнан СМА. На выходе сформировался фильтр W, через который прогнав исходный сигнал получаем некое созвездие, но не совсем идеальное. Насколько я понял из источников, для QAM СМА поверхность является мултимодальной и в этом случае на конечный результат очень большую роль может играть начальная установка эквалайзера. Насколько имеет смысл с точки зрения улучшения качества выхода те же данные еще раз прогнать через СМА, но с начальной установкой эквалайзера коэффициентами, полученными на первой иттерации?

2. Есть рекомендации применения связки СМА-DDLMS.
Первый подвопрос. Если СМА реализован при Т/2, то DDLMS тоже должен быть Т/2 или имеет смысл перейти на Т?
Второй подвопрос. При включении DDLMS имеет смысл начально фильтр устанавливать в выходное состояние СМА или опять ...00100...?

3. После применения Т/2 СМА (мультимодуль) выходное созвездие получается так, что внешние точки сведены хуже чем внутренние. И исли по внутренним точкам вроде бы допустимо включать DDLMS, то по внешним точкам опасно. Что может быть причиной, сущность СМА или по тем или иным причинам (времени не хватило на схождение, шаг неправильно выбран, ...) алгоритм не в полную силу отработал?

4. Встретил такое понятие "tap-leakage". Это реально полезная штука или что то из серии высокой теории, которая на практике редко нужна?
des00
Цитата(tim_s80 @ Jan 2 2012, 16:10) *
Насколько имеет смысл с точки зрения улучшения качества выхода те же данные еще раз прогнать через СМА, но с начальной установкой эквалайзера коэффициентами, полученными на первой иттерации?

если вы работаете в офлайне, то почему бы нет.
Цитата
Первый подвопрос. Если СМА реализован при Т/2, то DDLMS тоже должен быть Т/2 или имеет смысл перейти на Т?

на лету будете местоположение фильтра изменять ? sm.gif FSE/TSE эквалайзеры описывают частотный домен работы фильтра, а не то, откуда беруться отчеты для адаптации. Отчеты нужно брать после решающей функции (восстановления тактовой частоты) иначе будет бред.
Цитата
Второй подвопрос. При включении DDLMS имеет смысл начально фильтр устанавливать в выходное состояние СМА или опять ...00100...?

если устанавливать в исходное тогда смысл CMA? wink.gif
Цитата
3. После применения Т/2 СМА (мультимодуль) выходное созвездие получается так, что внешние точки сведены хуже чем внутренние.

хмм, как я понимаю речь о КАМ16. не встречал такого. модельку в матлабе можете привезти ?
Цитата
4. Встретил такое понятие "tap-leakage". Это реально полезная штука или что то из серии высокой теории, которая на практике редко нужна?

это великое, но иногда полезное шаманство в LMS алгоритмах. В FSE эквалайзерах я такое использовал, в TSE не приходилось. Фактически это добавление шума к сигналу, для адаптации. Помогает избежать гуляния эквалайзера по траектории равной СКО и предотвратить уход в разнос, при работе с сигналом с разряженой корреляционной матрицей.
tim_s80
Цитата
на лету будете местоположение фильтра изменять ? sm.gif FSE/TSE эквалайзеры описывают частотный домен работы фильтра, а не то, откуда беруться отчеты для адаптации. Отчеты нужно брать после решающей функции (восстановления тактовой частоты) иначе будет бред.

Т.е. фильтр один, Т/2, а корректируется он с разных алгоритмов?

Цитата
если устанавливать в исходное тогда смысл CMA? wink.gif

С учетом того,что я сейчас работаю чисто в оффлайне, возможно и вопросы специфические. Подразумевается, что на вход DDLMS не исходный сигнал подается, а после предварительного исправления СМА.

Цитата
хмм, как я понимаю речь о КАМ16. не встречал такого. модельку в матлабе можете привезти ?

Это я заметил не по модели, а потем данным, которые я давалл ссылки в первых постах темы
http://electronix.ru/forum/index.php?act=a...st&id=64055

Цитата
гуляния эквалайзера по траектории равной СКО.

Что означает траектория СКО?
des00
Цитата(tim_s80 @ Jan 2 2012, 16:47) *
Т.е. фильтр один, Т/2, а корректируется он с разных алгоритмов?

если TSE эквалайзер то T/2 T, если FSE то в другом домене фильтр стоит %)
Цитата
Это я заметил не по модели, а потем данным, которые я давалл ссылки в первых постах темы

смотреть надо, может быть эквалайзер построен не правильно или настроен не верно. мне сырые данные ни о чем не говорят по сути вопроса.
Цитата
Что означает траектория СКО?

в книгах вы же видели поверхности СКО, которыми оперируют при обсуждении сходимости эквалайзеров? там есть линии, двигаясь по которым коэффициенты фильтра будут изменяться, а значение СКО нет.
tim_s80
Цитата(des00 @ Jan 3 2012, 01:08) *
если TSE эквалайзер то T/2, если FSE то в другом домене фильтр стоит %)

Мож наоборот?
des00
Цитата(tim_s80 @ Jan 2 2012, 17:20) *
Мож наоборот?

а ну да, глючу уже под утро %)
tim_s80
При SNR=15 и M=16 вроде бы работает.
При SNR=35 и М=64 (и при 256) уходит в разнос.
В чем причина может быть?


Код
clear;
SNR = 15;
M = 16;  %
%---Формирование опорного созвездия----------------

k = log2(M);
alphaRe = [-(2*sqrt(M)/2-1):2:-1 1:2:2*sqrt(M)/2-1];
alphaIm = [-(2*sqrt(M)/2-1):2:-1 1:2:2*sqrt(M)/2-1];
%
ip = [0:M-1];
ipBin = dec2bin(ip.');
%
ipDecRe = bin2dec(ipBin(:,[1:k/2]));
ipGrayDecRe = bitxor(ipDecRe,floor(ipDecRe/2));
%
ipDecIm = bin2dec(ipBin(:,[k/2+1:k]));
ipGrayDecIm = bitxor(ipDecIm,floor(ipDecIm/2));
%
modRe = alphaRe(ipGrayDecRe+1);
modIm = alphaIm(ipGrayDecIm+1);
% опорное созвездие
QAMmod = modRe + j*modIm;
%--------------------------------------------------
L = 9; % Длина эквалайзера
u_cma = 1e-4;
u_lms = 2e-3;

W = 3.2;% Свойства канала

N = 10000; %размер сигнала

% Радиус для СМА
qaml=(abs(QAMmod)).^4;
qam2=(abs(QAMmod)).^2;
R2=qaml/qam2;


a = zeros(N,1); % Исходна последовательность
x = zeros(N,1); % Последовательность после канала
y = zeros(N-(L-1),1);
y1 = zeros(N-(L-1),1);


% ------Формирование потока данных-------

Ind_d=randsrc(1,N,1:M);
a=QAMmod(Ind_d);

%-------------------------------------------------------
h = zeros(1,3); % ИХ канала
for n =1:3,
    h(n) = 0.5*(1 + cos(2*pi*(n-2)/W));
end

x=filter(h,1,a); %прохождение через канал
x = awgn(x,SNR);
%-------------------------------------------------------


%------Обработка данных--------------------
for k=1:N-L+1,
    X(k,:) = x(k:k+L-1); % Преобразование входного потока в матричное представление относительно тапов эквалайзера
end

w(1,1:L) = 0; % Подготовка эквалайзера
w(1,(L+1)/2) = 1; % Начальная установка эквалайзера

for k = 1:N-(L-1),
    y(k) = X(k,:) * w(k,:)';
    e(k) = y(k)*(R2 - abs(y(k))^2);
    w(k+1,:) = w(k,:) + u_cma * e(k)' * X(k,:); % Формирование новой оценки эквалайзера
    
% Нахождение ближайшей опорной точки для дальнейшего применения DD-LMS
raz=QAMmod-y(k);
min_raz=find(raz==min(raz));
y1(k)=QAMmod(min_raz(1));

%------------------------------------------------------------
    %DD-LMS
    if (abs(y1(k) - y(k)) < 0.75) % Запуск DD-LMS при определенном пороге
        e(k) = y1(k) - y(k);
        if (abs(e(k)) < 0.5)
            w(k+1,:) = w(k,:) + 2*u_lms * abs(e(k))^2 * e(k)' * X(k,:);
        else
            w(k+1,:) = w(k,:) + 2*u_lms * e(k)' * X(k,:);
        end
    end
end

%--Вспомогательные операции-------------------------------------


figure(1);
subplot(2,2,1),plot(x(fix(N/2):N-(L-1)),'*');
subplot(2,2,2),plot(y(fix(N/2):N-(L-1)),'*');

elog = 10*log(abs(e).*abs(e))/log(10);
subplot(2,2,3:4),plot(elog);
des00
Цитата(tim_s80 @ Jan 2 2012, 18:12) *
В чем причина может быть?

код посмотрю.

Начал запускать скрипт, смотрю цифры очень странные. У вас пороги по годдарду неправильно посчитанны %)

считать пороги надо так
Код
qaml=sum((abs(QAMmod)).^4);
qam2=sum((abs(QAMmod)).^2);
R2=qaml/qam2;


Дальше пока не смотрел.

ЗЫ. свой код в теги оформите или модератора раздела попросите.

UPD. SNR в каких то странных у вас попугаях.
сам виноват, забыл что скрипт не пересчитвается при запуске по частям %)

UPD2
нормировал созвездие, отключил обновление коэффициенов эквалайзера, убрал искажения, убрал шум. добавил расчет СКО

mse(k) = abs(y(k) - y1(k)).^2;

результат в приложении. Очень странно что по мере расчета, ошибка по точке становится не нулевой. как это возможно, если коэффициенты эквалайзера не изменяются, не понятно. Ошибки в реализации фира у вас точно нет ?
tim_s80
По поводу R2 разница между "моим" подходом и вашим вроде бы не существенная и я пока не заметил ее влияния на качество обработки.

После коррекции кода типа

u_cma=1/(1000*L*mean(abs(QAMmod).^2));
u_lms=u_cma*50;

Получилось

SNR=15 M=16
Нажмите для просмотра прикрепленного файла

SNR=35 M=64

Нажмите для просмотра прикрепленного файла

но для М=256 даже и близко не получается (ни при увеличении SNR, ни при увеличении числа итераций N).

О какой потенциальной ошибке реализации фира идет речь, вроде бы просто матричное умножение, где там намудрить можно?

Нажмите для просмотра прикрепленного файла


В общем получилось, но не более чем методом научного тыка.
И не совсем понятна зависимость - u_lms почему то должно быть больше чем u_cma, хотя логичнее предположить, что в конце для уменьшения остаточной ошибки шаг адаптации должен быть меньше.
tim_s80
Цитата(des00 @ Jan 3 2012, 12:37) *
нормировал созвездие, отключил обновление коэффициенов эквалайзера, убрал искажения, убрал шум. добавил расчет СКО

mse(k) = abs(y(k) - y1(k)).^2;

результат в приложении. Очень странно что по мере расчета, ошибка по точке становится не нулевой. как это возможно, если коэффициенты эквалайзера не изменяются, не понятно. Ошибки в реализации фира у вас точно нет ?


А у меня вроде бы ошибка не растет при этих условиях

Нажмите для просмотра прикрепленного файла
des00
Цитата(tim_s80 @ Jan 3 2012, 05:46) *
И не совсем понятна зависимость - u_lms почему то должно быть больше чем u_cma, хотя логичнее предположить, что в конце для уменьшения остаточной ошибки шаг адаптации должен быть меньше.

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

Правда это все так, при работе в плавучке, при реализации в ограниченной разрядности не всегда уменьшение мю дает уменьшение ошибки. Тут лучше NLMS использовать, но у него свои особенности реализации.

ИМХО CMA и ему подобные, нужны для режима, который я называю "режим поиска". Т.е. нужно довести сигнал (если он вообще есть) до состояния когда может зацепиться DD детектор. Если вам нужна быстрая сходимость, то как уже сказал делайте по обучающей последовательности, выделяйте ее корреляционно и адаптируйте NLMS эквалайзер с большими значениями мю.

Вашу модель более не смотрел, времени небыло. А пороги все таки нужно считать правильно, т.к. это не просто чиселка, они же выводятся из уравнений задающих работу эквалайзера и минимизацию ошибки %)
tim_s80
Цитата(des00 @ Jan 4 2012, 12:27) *
А пороги все таки нужно считать правильно, т.к. это не просто чиселка, они же выводятся из уравнений задающих работу эквалайзера и минимизацию ошибки %)


Это то понятно, просто в некоторых источниках не знаю по каким причинам иногда "мой" вариант применяется.

Нуи по модели еще вопрос созрел. Если смотретьтретий график ошибки, то на первом этапе ошибка ходит ходуном, а потом "вдруг" достаточно резко сваливается. А по "учебникам" ошибка относительно плавно спадает. Это глюк реализации модели?
des00
Цитата(tim_s80 @ Jan 4 2012, 05:54) *
Если смотретьтретий график ошибки, то на первом этапе ошибка ходит ходуном, а потом "вдруг" достаточно резко сваливается. А по "учебникам" ошибка относительно плавно спадает. Это глюк реализации модели?

тут все зависит от модели искажений, порядка эквалайзера, метода адаптации и расчета ошибки, коэффициента сходимости. Когда эквалайзер находит куда ему точно двигаться, он достаточно быстро туда уходит, особенно если потом DD включается.
tim_s80
Если в приведенной ранее модели поставить
М=64
N=20000
u_cma=1.5*10^-4
u_lms=0.01
пороги при DD 0.75 и 0.5
то отрабатывает нормально.
Если я нормирую QAMmod = QAMmod./sqrt(mean(abs(QAMmod).^2)), то качество схождения аналогичного ненормированному варианту добиться не удается (0.75/6.5, 0.5/6.5 ) ни при каких комбинациях u_cma, u_lms (хотя так как мощность уменшилась, они вроде бы должны соответственно возрасти).
Непонятно.
des00
Цитата(tim_s80 @ Jan 5 2012, 17:43) *
Если в приведенной ранее модели поставить
М=64
N=20000
u_cma=1.5*10^-4
u_lms=0.01
пороги при DD 0.75 и 0.5
то отрабатывает нормально.
Если я нормирую QAMmod = QAMmod./sqrt(mean(abs(QAMmod).^2)), то качество схождения аналогичного ненормированному варианту добиться не удается (0.75/6.5, 0.5/6.5 ) ни при каких комбинациях u_cma, u_lms (хотя так как мощность уменшилась, они вроде бы должны соответственно возрасти).
Непонятно.

1. нормируете ИМХО не правильно. Нормированное созвездие КАМ строиться как QAMmod = QAMmod/(M/2). т.е. если говорить про КАМ16 нормированные точки будут 0.25/0.75
2. не забывайте что мю ставиться не от балды, а имеет строгие пределы и даже единицы измерения.
tim_s80
Цитата(des00 @ Jan 6 2012, 09:50) *
1. нормируете ИМХО не правильно. Нормированное созвездие КАМ строиться как QAMmod = QAMmod/(M/2). т.е. если говорить про КАМ16 нормированные точки будут 0.25/0.75
2. не забывайте что мю ставиться не от балды, а имеет строгие пределы и даже единицы измерения.


Под нормированипем я понимаю приравнивание мощности к 1. После моего варианта у меня получается std(QAMmod)=1.

По мю что должно быть не от балды понятно. Вопрос как? Выше уже писал по расчету мю много непоняток. В тех источниках, которые успел перелопатить, при eigenvalue spread около 1, при нормировании входного сигнала мю примерно 2/(10*L). Применение такого подхода к положительному результату не приводит. В моей модели работающие мю (полученные методом подбора) оказываются в 10-100 раз меньше. Видимо еще надо как то учитывать и eigenvalue spread и вид модуляции, но как это реально делается пока не пойму.
des00
Цитата(tim_s80 @ Jan 6 2012, 02:48) *
По мю что должно быть не от балды понятно. Вопрос как? Выше уже писал по расчету мю много непоняток. В тех источниках, которые успел перелопатить, при eigenvalue spread около 1, при нормировании входного сигнала мю примерно 2/(10*L). Применение такого подхода к положительному результату не приводит. В моей модели работающие мю (полученные методом подбора) оказываются в 10-100 раз меньше. Видимо еще надо как то учитывать и eigenvalue spread и вид модуляции, но как это реально делается пока не пойму.

mu в классическом LMS имеет разрядность 1/ватт. Чем больше подводимая к эквалайзеру мощность тем меньше должен быть mu. Если мне не изменяет память нормальное, внятное, инженерное объяснение критериев выбора mu я нашел только в одной книге, но вот в какой забыл (вроде у Diniz а но это не точно). Критерии относительно собственных векторов и чисел матрицы, ИМХО это математические критерии сходимости, они не учитывают факторов, реально возникающих при работе эквалайзера (чисто мое ИМХО, основанное на моем опыте). У себя я обычно ставлю mu в пределах 1/2^6 ... 1/2^12. Ну и естественно АРУ перед эквалайзером.

Лучший способ иметь мю независящий от сигнала это NLMS, реализуется просто (особенно на проце), но может возникнуть проблема с ростом разрядности при адаптации из-за операции деления.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.