Перейти к содержанию
    

Построение компенсационного КИХ-фильтра

Господа, что-то у меня совсем голова не варит, не могу сформулировать правильный вопрос для гугли.

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

Или может есть правильный способ? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

RLS эквалайзер

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

Или может есть правильный способ? ;)

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

 

RLS эквалайзер

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

 

А можно ссылочки на вменяемую теорию этого дела?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно ссылочки на вменяемую теорию этого дела?

 

Например у Прокиса можно почитать на тему эквалайзеров по критериям пикового искажения и минимума среднеквадратичной ошибки.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дробноинтервальные LMS/DFE или MMSE/DFE

с RLS не советую связываться, он хоть и быстро сходится (гораздо быстрее двух выше), но намучаетесь с параметром "забывания"

 

 

----- добавлено -----

неравномерность 10-20 ДБ это уже немало, важно еще, сколько таких провалов в спектре будет

от этого будет зависеть длина корректора

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

 

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

 

Поэтому желательно введение решающей обратной связи в схему корректора (Decision Feedback Equalizer, DFE).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда может в лоб: задаем желаемую АЧХ сигнала Hs, из которой вычитаем измеренную Hс, получаем He

делаем обратное пребразование Фурье от (Hs + He), получаем импульсную характеристику Корректора во временной обрасти

вроде так навскидку, если ничего не попутал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда может в лоб

 

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

 

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

 

Пока вроде так, опять же, если не напутал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда может в лоб...

 

Непонятно - почему не опробовать такой подход

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

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

на выходе "выползает" задержанный дельта-импульс...

 

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

неизвестных коэффициентов, решается методом минимизацией квадратов отклонения...

 

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

 

x=A\b;

 

Естественно, размерности фильтра и задержки - придется подобрать практически

Изменено пользователем sinc_func

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

На какие именно коэффициенты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

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

 

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

далее это содержимое умножается на неизвестные коэффициенты и суммируется - это FIR -фильтр -

Для каждого такого обсчета - на выходе - ноль, кроме места где стоит дельта-импульс (где его поставить - это

вопрос творческий)..

 

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

равенства в уравнениях выше там быть не может

 

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

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

 

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

(выход - нули, кроме места дельта импульса)

 

После синтеза коэффициентов: x=A\b;

делается подстановка коэффициентов и смотрится, что получилось практически - как упоминалось выше - точного

равенства там нет - и при необходимости меняется размер FIR фильтра и позиция выходного дельта-импульса

--------------------------------------------

То есть если сделаем просто перемножение матриц обратно

A*x =b2 как среднеквадратичное приближение к b (желаемому результату) - для понимания - наиболее просто именно такое

представление

Изменено пользователем sinc_func

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Онлайн-обучение не является обязательным, если у Вас на входе известный сигнал.

Например компенсационный фильтр, форма АЧХ которого выбирается в соответствие с требованиями

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

Критерий расчета может быть минимум СКО.

Недавно только у Васильва и Муро об этом читал.

Авторы отмечают, что методика расчета ошибки при воспроизведение АЧХ достаточна сложна, но

дают ссылку на Рабинер Л. Теория и применение цифровой обработки сигналов. 1978 г., там более

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, что-то у меня совсем голова не варит, не могу сформулировать правильный вопрос для гугли.

 

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

 

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

 

Есть ли возможность (и если есть - как это сделать) построить на основе этого отклика коэффициенты для КИХ-фильтра (для простоты - с той же частотой дискретизации, что и оцифровка самого отклика на единичный импульс), чтобы скомпенсировать этим фильтром в первом приближении неравномерность АЧХ в желаемой полосе частот, в более общем случае - убрать эффекты дисперсии и многолучевого распространения (допустим, зануление коэффициента передачи на каких-либо частотах отсутствует, нет провалов до нуля за счет интерференции, ну и вообще цифры неравномерности в канале адекватны, скажем, 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примерно то, о чем писал 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))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...