|
Выравнивание канала для QAM16 |
|
|
|
Dec 24 2011, 15:17
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Как правильно эквалайзить (слепым подходом) сигнал, представленный по сылке, T/2, QAM16
T2QAM16.rar ( 69.08 килобайт )
Кол-во скачиваний: 165Пробовал СМА, но бестолку. Или такой случай бесперспективен? Если бесперпективен, то по каким внешним признакам это можно оценить?
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 37)
|
Dec 24 2011, 16:09
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(tim_s80 @ Dec 24 2011, 18:17)  Как правильно эквалайзить (слепым подходом) сигнал, представленный по сылке, T/2, QAM16
T2QAM16.rar ( 69.08 килобайт )
Кол-во скачиваний: 165Пробовал СМА, но бестолку. Или такой случай бесперспективен? Если бесперпективен, то по каким внешним признакам это можно оценить? На глаз вроде все не очень плохо. А сигнал это и есть весь или он длиннее может быть? CMA медленно сходится может поэтому не получилось, попробуйте на большей выборке. Или "stop and go" можно попробовать, но там нужно фазу выровнять.
--------------------
ну не художники мы...
|
|
|
|
|
Dec 24 2011, 16:46
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(alex_os @ Dec 24 2011, 19:09)  На глаз вроде все не очень плохо. А сигнал это и есть весь или он длиннее может быть? CMA медленно сходится может поэтому не получилось, попробуйте на большей выборке. Или "stop and go" можно попробовать, но там нужно фазу выровнять. На всякий случай
T2QAM16.rar ( 911.13 килобайт )
Кол-во скачиваний: 85раз в 10 более Исодные отсчеты, без тактирования и коррекции несущей, вдруг я на этих этапах косячу
isxQAM16.rar ( 1.02 мегабайт )
Кол-во скачиваний: 83
Сообщение отредактировал tim_s80 - Dec 24 2011, 21:38
|
|
|
|
|
Dec 25 2011, 12:18
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
На этой выборке вроде бы удалось получить выход методом CMA, но при бешенном порядке эквалайзера. Но на выходе не QAM16 получилось. При слепом варианте если получился QAM большего порядка этому можно доверять или при определенных настройках СМА можно свести к любому QAM? Ну и зараза очень чуствителен выход от правильного выбора шага адаптации. В общем, то что у меня получился QAM больше 16 это на самом деле в этих отсчетах, или это глюки не совсем оптимального слепого алгоритма на основе СМА?
T2QAM16.rar ( 2.06 мегабайт )
Кол-во скачиваний: 99
|
|
|
|
|
Dec 25 2011, 12:41
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

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

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 25 2011, 16:00)  Да, но я указал вам использовать два различных переключаемых детектора. В своих модемах я использую MMA+DD. Мне это нравится больше чем Goddard + DD. SMMA хорошо, но дорого по ресурсу.
ЗЫ. знаковые версии годдара/мма/смма лучше не использовать %) где то на форуме есть тема про эквалайзеры, я там перебирал 7-9 алгоритмов адаптации (в том числе Stop&Go, который иногда приводят с ошибкой, про это я в той теме тоже писал) поищите. Попробовал ММА, в принципе большго отличия от СМА пока не заметил за исключением того, что созвездие ставит ровно. Требуемый порядок эквалайзера, время схождения вроде бы те же.
|
|
|
|
|
Dec 26 2011, 03:26
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 25 2011, 11:41)  Попробовал ММА, в принципе большго отличия от СМА пока не заметил за исключением того, что созвездие ставит ровно. Требуемый порядок эквалайзера, время схождения вроде бы те же. я же писал, используйте ДВА детектора. Если брать слепые алгоритмы, ИМХО, то лучшее качество, по критерию остаточного mse, вы получите только на DD детекторе. К нему приближается SMMA. Все остальное нужно только в том случае, когда DD детектору доверять нельзя. Зы. нужна быстрая сходимость ? делайте не слепой эквалайзер или RLS или ортогонализируйте входные данные через ортогональные преобразования.
--------------------
|
|
|
|
|
Dec 26 2011, 09:16
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 26 2011, 06:26)  или ортогонализируйте входные данные через ортогональные преобразования. Можно здесь немного прояснить. Ортогонализация, отбеливание, раскорреляция - это все одно и тоже? ДПФ это есть частный случай ортогонализации?
|
|
|
|
|
Dec 26 2011, 10:38
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 26 2011, 04:16)  Можно здесь немного прояснить. Ортогонализация, отбеливание, раскорреляция - это все одно и тоже? хмм, последние два термина слышу впервые, хотя и понимаю о чем речь %) Да это все из одной области. Если посмотреть формулу Винера, которая описывает решение задачи эквализации, то там есть обращение матрицы входных отсчетов. Оно же явно или неявно присутствует в выводе различных алгоритмов адаптации. Поэтому крайне желательно чтобы матрица не вырождалась, а этого можно достичь тогда, когда входные отсчеты статистически независимы (во многих книгах написано еще и в каком смысле независимы). Поэтому любые процедуры, способствующие этому для эквалайзера благо. Цитата ДПФ это есть частный случай ортогонализации? да, есть эквалайзеры работающие в частном домене через прямое и обратное ДПФ.
--------------------
|
|
|
|
|
Dec 26 2011, 10:51
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 26 2011, 13:38)  хмм, последние два термина слышу впервые, хотя и понимаю о чем речь %)
Да это все из одной области. Если посмотреть формулу Винера, которая описывает решение задачи эквализации, то там есть обращение матрицы входных отсчетов. Оно же явно или неявно присутствует в выводе различных алгоритмов адаптации. Поэтому крайне желательно чтобы матрица не вырождалась, а этого можно достичь тогда, когда входные отсчеты статистически независимы (во многих книгах написано еще и в каком смысле независимы). Поэтому любые процедуры, способствующие этому для эквалайзера благо.
да, есть эквалайзеры работающие в частном домене через прямое и обратное ДПФ. Тогда что получается, что после ортогонализации (частный случай есть ДПФ) я уже не могу применять класс алгоритмов СМА, а так как по сути перехожу в некий ортогональный базис (в частном случае в частотный) должен что-то другое применять?
|
|
|
|
|
Dec 26 2011, 11:14
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 26 2011, 14:00)  смотря какой метод ортогонализации (временной, частотный) вы используете и в каком базире работате (временном, частотном).
CMA алгоритм это метод вычисления ошибки, основанный на вычислениях во временной области Если я ухожу в некий ортогональный базис (например из временной области в частотную), то я получаю некоррелированные отсчеты в новом (ортогональном) базисе, т.е. я выполнил ортогонализацию Из него я могу обратным преобразованием получить один в один исходный сигнал. Если же я делаю что-то такое (ортогонализирую во временной области), что у меня во временной области нарушается имеющаяся независимость отсчетов, то формально я искажию имеющиеся входные данные - это разве допустимо, вначале исказить, а потом пытаться эквалайзить? И не подскажите ли название метода ортогонализации во временной области, после которой можно также будет применить что-нибудь из класса СМА?
|
|
|
|
|
Dec 26 2011, 11:34
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 26 2011, 05:14)  Если я ухожу в некий ортогональный базис (например из временной области в частотную), то я получаю некоррелированные отсчеты в новом (ортогональном) базисе, т.е. я выполнил ортогонализацию Из него я могу обратным преобразованием получить один в один исходный сигнал. Если же я делаю что-то такое (ортогонализирую во временной области), что у меня во временной области нарушается имеющаяся независимость отсчетов, то формально я искажию имеющиеся входные данные - это разве допустимо, вначале исказить, а потом пытаться эквалайзить? боюсь вас увести не в ту область, т.к. вплотную занимался сим вопросом года полтора назад. поищите документы на тему Transfom Domain Equalizers, сейчас глянул свою библиотеку, по диагонали не нашел нужную доку. Насчет Frequency Domain неплохо у хайкина написано. Цитата И не подскажите ли название метода ортогонализации во временной области, после которой можно также будет применить что-нибудь из класса СМА? Например дискретное преобразование Адамара. На этом форуме есть тема, где уважаемый petrov выкладывал модель такого эквалайзера. Делал эквалайзер с адамаром, сходится быстрее чем классический.
--------------------
|
|
|
|
|
Dec 26 2011, 12:09
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(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 на выходе включать? Далее, если у меня в начале квадрат стоит с неким наклоном, то применение оценок сигнала можно применять или надо правдами неправдами квадрат в начале выравнивать? Ну и -с- из каких соображений выбирается?
|
|
|
|
|
Dec 26 2011, 12:23
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(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. Если мне память не изменяет выбирал ее исходя из ошибки в установившемся режиме/скорости схождения.
--------------------
|
|
|
|
|
Dec 26 2011, 12:41
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Dec 26 2011, 15:23)  про наклон ничего не понял. вы имеете в виду перекос спектра ? Не совсем точно выразился. Речь идет о квадрате созвездия, который на начальном этапе повернут, т.е. стороны квадрата созвездия не параллельны сторонам опорного созвездия.
|
|
|
|
|
Dec 26 2011, 13:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 26 2011, 06:41)  Не совсем точно выразился. Речь идет о квадрате созвездия, который на начальном этапе повернут, т.е. стороны квадрата созвездия не параллельны сторонам опорного созвездия. т.е., как я понимаю, у вас есть нескомпенсированный фазовый сдвиг созвездия. Для настройки эквалайзера это не принципиально(особенно для слепых методов основанных на статистиках высоких порядков). Даже скажу больше, чисто в экспирементальных целях делал демодулятор на хороших генераторах, без отдельной петли по несушке. Петлей был TSE эквалайзер, его быстродействия хватало что бы держать созвездие (восстановление тактовой не зависело от фазового сдвига) %) И экспиремента ради делал FSE эквалайзер, который работал интерплятором Фэрроу в петле по тактовой %)
--------------------
|
|
|
|
|
Dec 28 2011, 06:40
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
При рассмотрении варианта DD-LMS встретился такой подход ... if (abs(e(k)) < 0.5) w(k+1,  = w(k,  + 2*mu * abs(e(k))^2 * e(k)' * X(k,  ; else w(k+1,  = w(k,  + 2*mu * e(k)' * X(k,  ; end ... т.е. в зависимости от величины текущей ошибки используется либо abs(e(k))^2 * e(k)' либо просто e(k)' Прояснмие кто могкт в чем суть данного явления?
|
|
|
|
|
Dec 28 2011, 08:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Dec 28 2011, 00:40)  Прояснмие кто могкт в чем суть данного явления? Динамически изменяемый mu. Быстрый вход в захват и маленькая СКО в стационарном режиме. ИМХО в данном случае что-то вида шаманства, лучше тогда уж лучше NLMS реализовать. ЗЫ. Вы если что интересное, по этой теме, нароете выкладывайте сюда. Если вам не затруднит конечно. ЗЗЫ. для FPGA не самый хороший вариант, т.к. 1. раздувается разрядность квадрата, так что выхлоп в mu от нее маленький будет. 2. для mu требуется умножитель, что при паралельном обновлении даст увеличение кол-ва умножителей на два порядка фильтра.
--------------------
|
|
|
|
|
Jan 2 2012, 21:10
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Всех с наступившим!
Появились следующие вопросы.
1. Предположим на неком фрагменте сигнала был прогнан СМА. На выходе сформировался фильтр W, через который прогнав исходный сигнал получаем некое созвездие, но не совсем идеальное. Насколько я понял из источников, для QAM СМА поверхность является мултимодальной и в этом случае на конечный результат очень большую роль может играть начальная установка эквалайзера. Насколько имеет смысл с точки зрения улучшения качества выхода те же данные еще раз прогнать через СМА, но с начальной установкой эквалайзера коэффициентами, полученными на первой иттерации?
2. Есть рекомендации применения связки СМА-DDLMS. Первый подвопрос. Если СМА реализован при Т/2, то DDLMS тоже должен быть Т/2 или имеет смысл перейти на Т? Второй подвопрос. При включении DDLMS имеет смысл начально фильтр устанавливать в выходное состояние СМА или опять ...00100...?
3. После применения Т/2 СМА (мультимодуль) выходное созвездие получается так, что внешние точки сведены хуже чем внутренние. И исли по внутренним точкам вроде бы допустимо включать DDLMS, то по внешним точкам опасно. Что может быть причиной, сущность СМА или по тем или иным причинам (времени не хватило на схождение, шаг неправильно выбран, ...) алгоритм не в полную силу отработал?
4. Встретил такое понятие "tap-leakage". Это реально полезная штука или что то из серии высокой теории, которая на практике редко нужна?
|
|
|
|
|
Jan 2 2012, 21:24
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jan 2 2012, 16:10)  Насколько имеет смысл с точки зрения улучшения качества выхода те же данные еще раз прогнать через СМА, но с начальной установкой эквалайзера коэффициентами, полученными на первой иттерации? если вы работаете в офлайне, то почему бы нет. Цитата Первый подвопрос. Если СМА реализован при Т/2, то DDLMS тоже должен быть Т/2 или имеет смысл перейти на Т? на лету будете местоположение фильтра изменять ?  FSE/TSE эквалайзеры описывают частотный домен работы фильтра, а не то, откуда беруться отчеты для адаптации. Отчеты нужно брать после решающей функции (восстановления тактовой частоты) иначе будет бред. Цитата Второй подвопрос. При включении DDLMS имеет смысл начально фильтр устанавливать в выходное состояние СМА или опять ...00100...? если устанавливать в исходное тогда смысл CMA? Цитата 3. После применения Т/2 СМА (мультимодуль) выходное созвездие получается так, что внешние точки сведены хуже чем внутренние. хмм, как я понимаю речь о КАМ16. не встречал такого. модельку в матлабе можете привезти ? Цитата 4. Встретил такое понятие "tap-leakage". Это реально полезная штука или что то из серии высокой теории, которая на практике редко нужна? это великое, но иногда полезное шаманство в LMS алгоритмах. В FSE эквалайзерах я такое использовал, в TSE не приходилось. Фактически это добавление шума к сигналу, для адаптации. Помогает избежать гуляния эквалайзера по траектории равной СКО и предотвратить уход в разнос, при работе с сигналом с разряженой корреляционной матрицей.
--------------------
|
|
|
|
|
Jan 2 2012, 21:47
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата на лету будете местоположение фильтра изменять ?  FSE/TSE эквалайзеры описывают частотный домен работы фильтра, а не то, откуда беруться отчеты для адаптации. Отчеты нужно брать после решающей функции (восстановления тактовой частоты) иначе будет бред. Т.е. фильтр один, Т/2, а корректируется он с разных алгоритмов? Цитата если устанавливать в исходное тогда смысл CMA?  С учетом того,что я сейчас работаю чисто в оффлайне, возможно и вопросы специфические. Подразумевается, что на вход DDLMS не исходный сигнал подается, а после предварительного исправления СМА. Цитата хмм, как я понимаю речь о КАМ16. не встречал такого. модельку в матлабе можете привезти ? Это я заметил не по модели, а потем данным, которые я давалл ссылки в первых постах темы http://electronix.ru/forum/index.php?act=a...st&id=64055Цитата гуляния эквалайзера по траектории равной СКО. Что означает траектория СКО?
Сообщение отредактировал tim_s80 - Jan 2 2012, 21:49
|
|
|
|
|
Jan 2 2012, 22:08
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jan 2 2012, 16:47)  Т.е. фильтр один, Т/2, а корректируется он с разных алгоритмов? если TSE эквалайзер то T/2 T, если FSE то в другом домене фильтр стоит %) Цитата Это я заметил не по модели, а потем данным, которые я давалл ссылки в первых постах темы смотреть надо, может быть эквалайзер построен не правильно или настроен не верно. мне сырые данные ни о чем не говорят по сути вопроса. Цитата Что означает траектория СКО? в книгах вы же видели поверхности СКО, которыми оперируют при обсуждении сходимости эквалайзеров? там есть линии, двигаясь по которым коэффициенты фильтра будут изменяться, а значение СКО нет.
--------------------
|
|
|
|
|
Jan 2 2012, 22:20
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Jan 3 2012, 01:08)  если TSE эквалайзер то T/2, если FSE то в другом домене фильтр стоит %) Мож наоборот?
|
|
|
|
|
Jan 2 2012, 23:12
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
При 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);
Сообщение отредактировал tim_s80 - Jan 3 2012, 11:52
|
|
|
|
|
Jan 3 2012, 09:37
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(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; результат в приложении. Очень странно что по мере расчета, ошибка по точке становится не нулевой. как это возможно, если коэффициенты эквалайзера не изменяются, не понятно. Ошибки в реализации фира у вас точно нет ?
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Jan 3 2012, 11:46
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
По поводу 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 - Jan 3 2012, 18:30
|
|
|
|
|
Jan 3 2012, 20:10
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Jan 3 2012, 12:37)  нормировал созвездие, отключил обновление коэффициенов эквалайзера, убрал искажения, убрал шум. добавил расчет СКО
mse(k) = abs(y(k) - y1(k)).^2;
результат в приложении. Очень странно что по мере расчета, ошибка по точке становится не нулевой. как это возможно, если коэффициенты эквалайзера не изменяются, не понятно. Ошибки в реализации фира у вас точно нет ? А у меня вроде бы ошибка не растет при этих условиях
|
|
|
|
|
Jan 4 2012, 09:27
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(tim_s80 @ Jan 3 2012, 05:46)  И не совсем понятна зависимость - u_lms почему то должно быть больше чем u_cma, хотя логичнее предположить, что в конце для уменьшения остаточной ошибки шаг адаптации должен быть меньше. это же очевидно, что мю у слепых методов, основанных на статистиках высоких порядков должен быть меньше. это же по сути почти градинтные методы, шагнул в сторону, посмотрел, шагнул еще и т.д. а при адаптации по жесткому решению мю можно сделать больше, это увеличит скорость сходимости, но увеличит и остаточную ошибку. А можно оставить тем же, но тогда уменьшиться скорость сходимости, остаточная ошибка. Правда это все так, при работе в плавучке, при реализации в ограниченной разрядности не всегда уменьшение мю дает уменьшение ошибки. Тут лучше NLMS использовать, но у него свои особенности реализации. ИМХО CMA и ему подобные, нужны для режима, который я называю "режим поиска". Т.е. нужно довести сигнал (если он вообще есть) до состояния когда может зацепиться DD детектор. Если вам нужна быстрая сходимость, то как уже сказал делайте по обучающей последовательности, выделяйте ее корреляционно и адаптируйте NLMS эквалайзер с большими значениями мю. Вашу модель более не смотрел, времени небыло. А пороги все таки нужно считать правильно, т.к. это не просто чиселка, они же выводятся из уравнений задающих работу эквалайзера и минимизацию ошибки %)
--------------------
|
|
|
|
|
Jan 4 2012, 10:54
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(des00 @ Jan 4 2012, 12:27)  А пороги все таки нужно считать правильно, т.к. это не просто чиселка, они же выводятся из уравнений задающих работу эквалайзера и минимизацию ошибки %) Это то понятно, просто в некоторых источниках не знаю по каким причинам иногда "мой" вариант применяется. Нуи по модели еще вопрос созрел. Если смотретьтретий график ошибки, то на первом этапе ошибка ходит ходуном, а потом "вдруг" достаточно резко сваливается. А по "учебникам" ошибка относительно плавно спадает. Это глюк реализации модели?
|
|
|
|
|
Jan 5 2012, 23:43
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Если в приведенной ранее модели поставить М=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 (хотя так как мощность уменшилась, они вроде бы должны соответственно возрасти). Непонятно.
|
|
|
|
|
Jan 6 2012, 07:48
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-08-10
Пользователь №: 58 866

|
Цитата(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 и вид модуляции, но как это реально делается пока не пойму.
|
|
|
|
|
Jan 12 2012, 06:07
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

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