Fast 0 Posted December 9, 2011 · Report post Не понял какой суммы? С 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у - без Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 9, 2011 · Report post Все должно работать! 1) Не 1/4 поднесущих полностью обнулится а гораздо меньшее количество, естественно подразумевается что SNR очень велик. 2) FEC 1/2 модуляция QPSK. Здесь код channel_estimator.zip 2 Fast. Т.е. Вы предлагаете построить линейный фильтр который выделит эхо и потом это эхо вычесть из сигнала? В этом случае ничего хорошего не получится. Что будет представлять из себя АЧХ такого фильтра? Это будет что-то вроде инверсии AЧХ канала. Соответственно если в спектре нули .... Quote Ответить с цитированием Share this post Link to post Share on other sites
Wasja 0 Posted December 12, 2011 (edited) · Report post у меня сейчас просто нет времени смоделировать весь процесс, хотя задачка очень интересная и важная в двух словах: для конца символа имеем 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% защитного интервала не будет отличатся от частотной характеристики в самом символе. Edited December 12, 2011 by Wasja Quote Ответить с цитированием Share this post Link to post Share on other sites
Fast 0 Posted December 12, 2011 · Report post Т.е. Вы предлагаете построить линейный фильтр который выделит эхо и потом это эхо вычесть из сигнала? В этом случае ничего хорошего не получится. Что будет представлять из себя АЧХ такого фильтра? Это будет что-то вроде инверсии 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 ? Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 12, 2011 · Report post это будет линейный фильтр, через который пропускается S(t-dT), и вычитается из S(t) S`(t) = S(t) - S(t-dT)*H` Я правильно понимаю что? S(t) - принятый сигнал S'(t) - oценка эха. Quote Ответить с цитированием Share this post Link to post Share on other sites
Fast 0 Posted December 12, 2011 · Report post Я правильно понимаю что? S(t) - принятый сигнал S'(t) - oценка эха. S(t) - принятый сигнал S'(t) - очищенный от эха S(t-dT)*H` - оценка эха Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 12, 2011 · Report post 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) ). Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте :). Quote Ответить с цитированием Share this post Link to post Share on other sites
Fast 0 Posted December 12, 2011 · Report post Так, что деление на числа близкие к нулю будет присутствовать в том или ином месте :). ну и что, в радиоканале вечная проблема вытянуть спектральные нули. просто не надо делить на ноль :) т.е. это уже совсем другая проблема Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 12, 2011 · Report post ну и что, в радиоканале вечная проблема вытянуть спектральные нули. просто не надо делить на ноль :) т.е. это уже совсем другая проблема Т.е Вы настаиваете на том, что возможен другой, лучший чем традиционный способ декодированая OFDM :) ? Quote Ответить с цитированием Share this post Link to post Share on other sites
Wasja 0 Posted December 12, 2011 · Report post Wasja , Вы уже попробовали способ , предложенный alex_os ? В процессе. Но при QAM-64 результат не радует. Прикидываю возможность повышения точности при усреднении частотных оценок. Для 2k-точек (используется 1705 несущих), режим модуляции QPSK после второго исправления получается такая картинка, длина эха 0,95 защитного интервала: (синий - реальная составляющая спектра, красный - мнимая). При меньших сдвигах эха - картинки получаются красивее. Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 12, 2011 · Report post В процессе. Но при QAM-64 результат не радует. При меньших сдвигах эха - картинки получаются красивее. А Вы звездочку так нарисуйте нагляднее будет. plot(x, 'х'); Вообще наилучший метод оценки канала считается MMSE. Только он сильно затратный в вычислительном плане. 999.pdf Quote Ответить с цитированием Share this post Link to post Share on other sites
Wasja 0 Posted December 12, 2011 · Report post А Вы звездочку так нарисуйте нагляднее будет. Можно и звездочку: Вообще наилучший метод оценки канала считается MMSE. Только он сильно затратный в вычислительном плане. Дойдет время и до оценки, пока бы функционал проверить... Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 12, 2011 · Report post Можно и звездочку: FEC справляется с ошибками? Quote Ответить с цитированием Share this post Link to post Share on other sites
Wasja 0 Posted December 12, 2011 · Report post Хорошо, в спектральной области имеем на входе канала имеем 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: Quote Ответить с цитированием Share this post Link to post Share on other sites
alex_os 0 Posted December 12, 2011 · Report post По-моему вернее так: 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: Все правильно, природу не обманешь! Если какая-то несущая в результате фединга просела глубоко под шум, то никак ее не восстановить. Остается только правильно посчитать значения мягких метрик для данной несущей, чтобы влияние ее на процесс декодирования ПУ кода, было не велико. Quote Ответить с цитированием Share this post Link to post Share on other sites