Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Правильная настройка корректора
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Alex65111

Имеется сигнал xn (КАМ16). Нажмите для просмотра прикрепленного файла Приведенная ниже программа худо ли бедно но корректирует МСИ. Однако, если выполнить нормировку входного сигнала (снять комментарий со строчки xn=xn/std(xn)), то как научно подобрать R и mut неясно (R вроде бы должен уменьшаться, а mut увеличиваться), а ручной подбор R и mut к положительному результату не приводит.
Вопрос – как при нормировании сигнала ро мощности к 1 подобрать R и mut, или нормирование по мощности может оказаться вредным?

load s1;

%xn=xn/std(xn);

iterations = length(xn)-50; % number of iterations
M = 7; % number of filter taps
N = iterations+M-1;

mut = 1e-4; % step size

R=12;
w=zeros(M,1);
w(round(M/2))=1;
for i=M:N
k = i-M+1;
Zy(k,1) = w'*xn(i:-1:i-M+1);
err(k,1)=Zy(k,1)*(R - abs(Zy(k,1))^2);
w = w + mut.*xn(i:-1:i-M+1).*err(k,1)';
end

figure, plot(Zy,'.')


Andrey_1
Цитата(Alex65111 @ Apr 12 2011, 11:37) *
Имеется сигнал xn (КАМ16). Нажмите для просмотра прикрепленного файла Приведенная ниже программа худо ли бедно но корректирует МСИ. Однако, если выполнить нормировку входного сигнала (снять комментарий со строчки xn=xn/std(xn)), то как научно подобрать R и mut неясно (R вроде бы должен уменьшаться, а mut увеличиваться), а ручной подбор R и mut к положительному результату не приводит.
Вопрос – как при нормировании сигнала ро мощности к 1 подобрать R и mut, или нормирование по мощности может оказаться вредным?

load s1;

%xn=xn/std(xn);

iterations = length(xn)-50; % number of iterations
M = 7; % number of filter taps
N = iterations+M-1;

mut = 1e-4; % step size

R=12;
w=zeros(M,1);
w(round(M/2))=1;
for i=M:N
k = i-M+1;
Zy(k,1) = w'*xn(i:-1:i-M+1);
err(k,1)=Zy(k,1)*(R - abs(Zy(k,1))^2);
w = w + mut.*xn(i:-1:i-M+1).*err(k,1)';
end

figure, plot(Zy,'.')


нормирование mut делением его на квадрат амплитуды опорного сигнала минус малая постоянная (0.1) только во благо - не будете совокуплятся с ручной настройкой шага адаптации мут (mut)

help lms в командном окне

See also signlms, normlms, varlms, rls, cma, lineareq, dfe, equalize.
Alex65111
Опорное созвездие Нажмите для просмотра прикрепленного файла. На основе его модуляция плюс шум получается xn.



нормирование mut делением его на квадрат амплитуды опорного сигнала минус малая постоянная (0.1) только во благо не прокатывает.




Andrey_1
Цитата(Alex65111 @ Apr 14 2011, 23:00) *
Опорное созвездие Нажмите для просмотра прикрепленного файла. На основе его модуляция плюс шум получается xn.

нормирование mut делением его на квадрат амплитуды опорного сигнала минус малая постоянная (0.1) только во благо не прокатывает.


автор как бы намекает что в опорном сигнале есть шум?
alex_os
Цитата(Alex65111 @ Apr 12 2011, 11:37) *
Имеется сигнал xn (КАМ16). Нажмите для просмотра прикрепленного файла Приведенная ниже программа худо ли бедно но корректирует МСИ. Однако, если выполнить нормировку входного сигнала (снять комментарий со строчки xn=xn/std(xn)), то как научно подобрать R и mut неясно (R вроде бы должен уменьшаться, а mut увеличиваться), а ручной подбор R и mut к положительному результату не приводит.
Вопрос – как при нормировании сигнала ро мощности к 1 подобрать R и mut, или нормирование по мощности может оказаться вредным?


Гуглить "CMA equalizer" и прочитать что такое R тогда все вопросы отпадут. У Вас явная ерунда написана, нормализация сигнала к 1, а R=12. R однозначно определяется созвездием и равен (может ошибусь) среднему значению квадратов модулей точек сигнального созвездия.
ps в алгоритме со сопряжениями ничего не напутано ?
Alex65111
Цитата(Andrey_1 @ Apr 15 2011, 05:11) *
автор как бы намекает что в опорном сигнале есть шум?


Че то совсем непонятно. Под опорным сигналом (т.е. исходным созвездием) я понимаю чистый "а". Принимаю "xn".
"mut" надо делить на std(a)^2 или на std(xn)^2?, и не надо ли эту величину еще умножать на длину фильтра эквалайзера "M"?
Делал и так и так, но не сходится. И вообще, какое "mut" надо нормировать - то что было исходным, т.е. mut = 1e-4?

Цитата(alex_os @ Apr 15 2011, 09:27) *
У Вас явная ерунда написана, нормализация сигнала к 1, а R=12. R однозначно определяется созвездием и равен (может ошибусь) среднему значению квадратов модулей точек сигнального созвездия.


12 написано без норировки, хотя более точно там получается 13 с копейкой. После нормировки естественно R пресчитываю и ставлю его около 1.3.
Насчет R рекомендуют отношение 4ой степени к квадрату созвездия чем и пользуюсь.
А про stepsize в гугле написано много, но не клеется. Пишут и про абстракт типа собственных значений, и про более приближенное к жизни энергию сигнала в фильтре корректора, но нигде не видел реального примера расчета, все везде в лучшем случае приводят формулу, а потом сразу же его задают и все, без примера расчета по формуле.
alex_os
Цитата(Alex65111 @ Apr 15 2011, 10:19) *
Насчет R рекомендуют отношение 4ой степени к квадрату созвездия чем и пользуюсь.
А про stepsize в гугле написано много, но не клеется. Пишут и про абстракт типа собственных значений, и про более приближенное к жизни энергию сигнала в фильтре корректора, но нигде не видел реального примера расчета, все везде в лучшем случае приводят формулу, а потом сразу же его задают и все, без примера расчета по формуле.


Так какой может быть расчет stepsize? Если бы была известна импульсная характеристика (ИХ) канала, то можно было бы
на основе собственных чисел найти оптимальное значение stepsize. Но в жизни ИХ не известна, поэтому просто берут
stepsize порядка 0.0001.. 0.01 и практическим путем подбирают. С другой стороны если ИХ известна (чисто гипотетический случай), на фиг тогда вообще адаптивный корректор? Один раз посчитали фильтр и все sm.gif.

ps если еще не читали, почитайте про NLMS, но там тоже "отфонарный" коэффициент присутствует.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.