Fast 0 9 декабря, 2011 Опубликовано 9 декабря, 2011 · Жалоба Не понял какой суммы? С H понятно что делать. Поэлементно инвертировать и умножить на выход fft. И дальше на демодулятор. А адаптивный фильтр какой? Типа LMS и где он находится ? До FFT ? И как его обучать? не-не, простой коррекцией АЧХ и ФЧХ не обойтись, нужно именно компенсировать влияние эхо-сигнала, который является тем же самым сигналом что и передавался, только задержанным на dt и "умноженным" на H у меня сейчас просто нет времени смоделировать весь процесс, хотя задачка очень интересная и важная в двух словах: для конца символа имеем Sx = S0*H0 + Se*He где S0 - исходный сигнал, H0 - передаточная характеристика канала для сигнала где Se - сигнал эха, He - передаточная характеристика эха для повторения конца символа, где 5% остаток без эха: Sy = S0*H0 Sx = S0*H0 + Se*He Sy = S0*H0 Se*He - (Sx - Sy) = 0 Se = S0(-dT) S0(-dT)*H` - (Sx - Sy) = err необходимо обучить H` для err => 0. сколько потребуется OFDM-символов зависит от С/Ш и уровня эха h`(t) = h`(t-1) + err*k; Sx и Sy - это, соотв, 5% фрагменты символа, которые повторяется в конце, т.е. Sx - с эхом, Sу - без Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 9 декабря, 2011 Опубликовано 9 декабря, 2011 · Жалоба Все должно работать! 1) Не 1/4 поднесущих полностью обнулится а гораздо меньшее количество, естественно подразумевается что SNR очень велик. 2) FEC 1/2 модуляция QPSK. Здесь код channel_estimator.zip 2 Fast. Т.е. Вы предлагаете построить линейный фильтр который выделит эхо и потом это эхо вычесть из сигнала? В этом случае ничего хорошего не получится. Что будет представлять из себя АЧХ такого фильтра? Это будет что-то вроде инверсии AЧХ канала. Соответственно если в спектре нули .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wasja 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 (изменено) · Жалоба у меня сейчас просто нет времени смоделировать весь процесс, хотя задачка очень интересная и важная в двух словах: для конца символа имеем Sx = S0*H0 + Se*He где S0 - исходный сигнал, H0 - передаточная характеристика канала для сигнала где Se - сигнал эха, He - передаточная характеристика эха для повторения конца символа, где 5% остаток без эха: Sy = S0*H0 Sx = S0*H0 + Se*He Sy = S0*H0 Se*He - (Sx - Sy) = 0 Se = S0(-dT) S0(-dT)*H` - (Sx - Sy) = err необходимо обучить H` для err => 0. сколько потребуется OFDM-символов зависит от С/Ш и уровня эха h`(t) = h`(t-1) + err*k; Sx и Sy - это, соотв, 5% фрагменты символа, которые повторяется в конце, т.е. Sx - с эхом, Sу - без Возможно я не совсем корректно выразился, но эхо в сигнале присутствует всегда. Поэтому на этих 5% это будет не чистый сигнал - а сумма основного и эхо сигналов одного символа (Si). А на 95% - сумма разных символов - основной сигнал символ Si+1, эхо-сигнал символ Si. Т.е. частотная характеристика этих 5% защитного интервала не будет отличатся от частотной характеристики в самом символе. Изменено 12 декабря, 2011 пользователем Wasja Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fast 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Т.е. Вы предлагаете построить линейный фильтр который выделит эхо и потом это эхо вычесть из сигнала? В этом случае ничего хорошего не получится. Что будет представлять из себя АЧХ такого фильтра? Это будет что-то вроде инверсии AЧХ канала. Соответственно если в спектре нули .... это будет линейный фильтр, через который пропускается S(t-dT), и вычитается из S(t) S`(t) = S(t) - S(t-dT)*H` будет ли это "что-то вроде инверсии АЧХ канала" - сомневаюсь Поэтому на этих 5% это будет не чистый сигнал - а сумма основного и эхо сигналов одного символа (Si). А на 95% - сумма разных символов - основной сигнал символ Si+1, эхо-сигнал символ Si. Т.е. частотная характеристика этих 5% защитного интервала не будет отличатся от частотной характеристики в самом символе. тогда нужен другой критерий для минимизации ошибки. например, С/Ш. точную эхо-задержку можно найти по АКФ далее решать S`(t) = S(t) - S(t-dT)*h` snr->max решение где-то рядом, только надо упорно ковырять p.s. Wasja , Вы уже попробовали способ , предложенный alex_os ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба это будет линейный фильтр, через который пропускается S(t-dT), и вычитается из S(t) S`(t) = S(t) - S(t-dT)*H` Я правильно понимаю что? S(t) - принятый сигнал S'(t) - oценка эха. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fast 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Я правильно понимаю что? S(t) - принятый сигнал S'(t) - oценка эха. S(t) - принятый сигнал S'(t) - очищенный от эха S(t-dT)*H` - оценка эха Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба S(t) - принятый сигнал S'(t) - очищенный от эха S(t-dT)*H` - оценка эха Хорошо, в спектральной области имеем на входе канала имеем Sx(jw) На выходе канала S(jw) = Sx(jw)*(1+exp(-1jw*delay)), тогда H(jw) = Sx(jw) * exp(-1jw*delay) / S(jw) = exp( -1j*w*delay ) / ( 1+exp(-1j*w*delay) ). Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fast 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте :). ну и что, в радиоканале вечная проблема вытянуть спектральные нули. просто не надо делить на ноль :) т.е. это уже совсем другая проблема Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба ну и что, в радиоканале вечная проблема вытянуть спектральные нули. просто не надо делить на ноль :) т.е. это уже совсем другая проблема Т.е Вы настаиваете на том, что возможен другой, лучший чем традиционный способ декодированая OFDM :) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wasja 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Wasja , Вы уже попробовали способ , предложенный alex_os ? В процессе. Но при QAM-64 результат не радует. Прикидываю возможность повышения точности при усреднении частотных оценок. Для 2k-точек (используется 1705 несущих), режим модуляции QPSK после второго исправления получается такая картинка, длина эха 0,95 защитного интервала: (синий - реальная составляющая спектра, красный - мнимая). При меньших сдвигах эха - картинки получаются красивее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба В процессе. Но при QAM-64 результат не радует. При меньших сдвигах эха - картинки получаются красивее. А Вы звездочку так нарисуйте нагляднее будет. plot(x, 'х'); Вообще наилучший метод оценки канала считается MMSE. Только он сильно затратный в вычислительном плане. 999.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wasja 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба А Вы звездочку так нарисуйте нагляднее будет. Можно и звездочку: Вообще наилучший метод оценки канала считается MMSE. Только он сильно затратный в вычислительном плане. Дойдет время и до оценки, пока бы функционал проверить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Можно и звездочку: FEC справляется с ошибками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wasja 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба Хорошо, в спектральной области имеем на входе канала имеем Sx(jw) На выходе канала S(jw) = Sx(jw)*(1+exp(-1jw*delay)), тогда H(jw) = Sx(jw) * exp(-1jw*delay) / S(jw) = exp( -1j*w*delay ) / ( 1+exp(-1j*w*delay) ). По-моему вернее так: H(jw) = S(jw) / Sx(jw) = Sx(jw)*(1+exp(-1jw*delay)) / Sx(jw) = 1+exp(-1jw*delay) Исправление тогда будет осуществляться по формуле: Sx(jw) = S(jw) / H(jw) = S(jw) / ( 1+exp(-1j*w*delay) ) Соотвественно, точность такого исправления целиком и полностью будет зависеть от точности определения "delay" - небольшой сдвиг даст нелинейные искажения. К тому же вопрос как такое исправление поведет себя при наличии нескольких эхо сигналов (меньшей мощности). Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте :). Да, они везде вылазят. :fman: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex_os 0 12 декабря, 2011 Опубликовано 12 декабря, 2011 · Жалоба По-моему вернее так: H(jw) = S(jw) / Sx(jw) = Sx(jw)*(1+exp(-1jw*delay)) / Sx(jw) = 1+exp(-1jw*delay) Исправление тогда будет осуществляться по формуле: Sx(jw) = S(jw) / H(jw) = S(jw) / ( 1+exp(-1j*w*delay) ) Соотвественно, точность такого исправления целиком и полностью будет зависеть от точности определения "delay" - небольшой сдвиг даст нелинейные искажения. К тому же вопрос как такое исправление поведет себя при наличии нескольких эхо сигналов (меньшей мощности). Да, они везде вылазят. :fman: Все правильно, природу не обманешь! Если какая-то несущая в результате фединга просела глубоко под шум, то никак ее не восстановить. Остается только правильно посчитать значения мягких метрик для данной несущей, чтобы влияние ее на процесс декодирования ПУ кода, было не велико. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться