Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Построение компенсационного КИХ-фильтра
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Rst7
Господа, что-то у меня совсем голова не варит, не могу сформулировать правильный вопрос для гугли.

Ситуация следующая:

Есть некий тракт передачи сигнала, есть его импульсный отклик.

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

Допустим, вычислительные возможности неограниченны - расчет компенсационного фильтра нужно производить один раз в оффлайне - характеристики тракта практически неизменны.

На пальцах вроде получается так - из импульсного отклика получаем амплитудно-фазовую частотную характеристику (ну на самом деле для каждой частоты получаем I и Q), затем инвертируем амплитуды относительно единичного усиления и изменяем знак фаз на противоположный. Затем - обратное преобразование.

Вот момент инверсии амплитуд I=1/I, Q=1/Q в купе с изменением знака фазы вызывает сомнение. Или фазу тогда уже не требуется менять?

Или надо делать операцию (1+j)/Z?

Ну и такое преобразование не очень понятно с точки зрения компенсации многолучевости.

Или может есть правильный способ? wink.gif
des00
Цитата(Rst7 @ May 11 2011, 05:02) *
Допустим, вычислительные возможности неограниченны - расчет компенсационного фильтра нужно производить один раз в оффлайне - характеристики тракта практически неизменны.

RLS эквалайзер
petrov
Цитата(Rst7 @ May 11 2011, 15:02) *
На пальцах вроде получается так - из импульсного отклика получаем амплитудно-фазовую частотную характеристику (ну на самом деле для каждой частоты получаем I и Q), затем инвертируем амплитуды относительно единичного усиления и изменяем знак фаз на противоположный. Затем - обратное преобразование.

Вот момент инверсии амплитуд I=1/I, Q=1/Q в купе с изменением знака фазы вызывает сомнение. Или фазу тогда уже не требуется менять?


Инвертируем модуль комплексного числа, фазу меняем на комплексно сопряжённую.

Цитата(Rst7 @ May 11 2011, 15:02) *
Ну и такое преобразование не очень понятно с точки зрения компенсации многолучевости.

Или может есть правильный способ? wink.gif


Обычно используют MMSE эквалайзеры, т. е. учитывают не только обратную характеристику канала но и шум, чтобы его не усиливать. Тема подробно разбирается применительно к демодуляции OFDM.
Rst7
QUOTE
Инвертируем модуль комплексного числа, фазу меняем на комплексно сопряжённую.


Да, точно. Спасибо.


QUOTE
RLS эквалайзер

QUOTE
Обычно используют MMSE эквалайзеры


А можно ссылочки на вменяемую теорию этого дела?
petrov
Цитата(Rst7 @ May 11 2011, 15:39) *
А можно ссылочки на вменяемую теорию этого дела?


Например у Прокиса можно почитать на тему эквалайзеров по критериям пикового искажения и минимума среднеквадратичной ошибки.
Fast
дробноинтервальные LMS/DFE или MMSE/DFE
с RLS не советую связываться, он хоть и быстро сходится (гораздо быстрее двух выше), но намучаетесь с параметром "забывания"


----- добавлено -----
неравномерность 10-20 ДБ это уже немало, важно еще, сколько таких провалов в спектре будет
от этого будет зависеть длина корректора
т.е. простыми словами, сможет ли корректор (кусочно-непрерывная ф-ция) аппроксимировать передаточную хар-ку, обратную искажениям в канале

для классических feedforward LMS, RLS, MSE длина может оказаться недопустимо большой, что скажется как на вычислительных ресурсах, так и скорости и глубине сходимости. Маленькая длина не позволит достаточно минимизировать СКО.

Поэтому желательно введение решающей обратной связи в схему корректора (Decision Feedback Equalizer, DFE).
Правда, в этом случае, обучать корректор следует очень аккуратно, он становится очень неусточивым к большим ошибкам(выбросам,импульсам), разнесет к чертовой бабушке.
Rst7
Так, подождите, господа, не так быстро. Я так понимаю, что все предложенные эквалайзеры заточены под онлайн-обучение. У меня ситуация чуть другая - есть импульсная характеристика, снятая с хорошей точностью, практически без шумов, лишних выбросов и прочих помех. Вот на основе ее и надо построить коэффициенты. Не нужно сложностей типа адаптации на ходу, тракт у меня считается стабильный.
Fast
тогда может в лоб: задаем желаемую АЧХ сигнала Hs, из которой вычитаем измеренную Hс, получаем He
делаем обратное пребразование Фурье от (Hs + He), получаем импульсную характеристику Корректора во временной обрасти
вроде так навскидку, если ничего не попутал
Rst7
QUOTE
тогда может в лоб


Да я тоже примерно об этом речь и вел в первом посте, про "на пальцах".

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

Пока вроде так, опять же, если не напутал.
sinc_func
Цитата(Fast @ May 11 2011, 19:50) *
тогда может в лоб...


Непонятно - почему не опробовать такой подход
Вот "ползет" по буферу задержки эта входная импульсная последовательность,
выбранный фрагмент умножается на соответствующие коэффициенты FIR-фильтра,
на выходе "выползает" задержанный дельта-импульс...

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

а фактически - это одна строчка записи Matlab-a

x=A\b;

Естественно, размерности фильтра и задержки - придется подобрать практически
Rst7
QUOTE
Вот "ползет" по буферу задержки эта входная импульсная последовательность,


Собственно импульсная характеристика?

QUOTE
выбранный фрагмент умножается на соответствующие коэффициенты FIR-фильтра,


На какие именно коэффициенты?
sinc_func
Цитата(Rst7 @ May 11 2011, 21:22) *
Собственно импульсная характеристика?


Я практиковал этот способ одно время для синтеза коэффициентов нестандартных фильтров

В вашем случае - запускаем дельта-импульс в ваш фильтр (канал) и из него "выползает" импульсная характиристика,
далее - ее вводим в компенсирующий фильтр - и из него "выползает" задержанный дельта-импульс (в идеале)

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

Уравнений здесь естественно много больше чем неизвестных коэффициентов фильтра, да и строгого
равенства в уравнениях выше там быть не может

Матлаб такие системы решает минимизацией суммы квадратов отклоненний
Там уже в нем это все встроено и решается обратно-слэшовым делением

И задача сводится к тому , чтобы набить матрицы A (строки - поток данных в буфере FIR фильтра) и вектора(столбец) b
(выход - нули, кроме места дельта импульса)

После синтеза коэффициентов: x=A\b;
делается подстановка коэффициентов и смотрится, что получилось практически - как упоминалось выше - точного
равенства там нет - и при необходимости меняется размер FIR фильтра и позиция выходного дельта-импульса
--------------------------------------------
То есть если сделаем просто перемножение матриц обратно
A*x =b2 как среднеквадратичное приближение к b (желаемому результату) - для понимания - наиболее просто именно такое
представление
Mad_max
Цитата(Rst7 @ May 11 2011, 19:30) *
Так, подождите, господа, не так быстро. Я так понимаю, что все предложенные эквалайзеры заточены под онлайн-обучение. У меня ситуация чуть другая - есть импульсная характеристика, снятая с хорошей точностью, практически без шумов, лишних выбросов и прочих помех. Вот на основе ее и надо построить коэффициенты. Не нужно сложностей типа адаптации на ходу, тракт у меня считается стабильный.

Онлайн-обучение не является обязательным, если у Вас на входе известный сигнал.
Например компенсационный фильтр, форма АЧХ которого выбирается в соответствие с требованиями
к коррекции частотных потерь в обрабатываемом сигнале, может быть рассчитан оффлайн.
Критерий расчета может быть минимум СКО.
Недавно только у Васильва и Муро об этом читал.
Авторы отмечают, что методика расчета ошибки при воспроизведение АЧХ достаточна сложна, но
дают ссылку на Рабинер Л. Теория и применение цифровой обработки сигналов. 1978 г., там более
подробна рассмотрена эта проблематика.
dimka76
Цитата(Rst7 @ May 11 2011, 15:02) *
Господа, что-то у меня совсем голова не варит, не могу сформулировать правильный вопрос для гугли.

Ситуация следующая:

Есть некий тракт передачи сигнала, есть его импульсный отклик.

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



Есть методика построения цифрового фильтра по заданной АЧХ (графически заданной например ).
Почитать можно у Айфичер Э. Джервис Б. Цифровая обработка сигналов. Практический подход. 2-е издание. 2004г.

Очень доступно и ясно все излагают.

http://lord-n.narod.ru/download/books/wall...vis.B.part1.rar
http://lord-n.narod.ru/download/books/wall...vis.B.part2.rar
alex_os
Примерно то, о чем писал sinc_func.
Код
Lf = 40;            % длина фильтра-корректора
h = randn(5,1);     % импульсная характеристика тракта
H = convmtx(h, Lf);
d = zeros(length(h)+Lf-1,1);
d(fix(end/2)) = 1;  % желаемая ИХ системы тракт-корректор
f = pinv(H)*d;      % ИХ фльтра-корректора
% рисуем d и то что получилось фактически
plot(1:length(d), d,  1:length(d), conv(f,h))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.