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

andyp

Участник
  • Постов

    545
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент andyp


  1. Да почти все поддерживают. PAINT.NET, Photoshop, GIMP - из тех, что знаю. Можно photoshop s-curve погуглить. Ну да. Если удастся, то сигнал сложится когерентно со всех каналов, а шум - по мощности. Это если шум некоррелированным в каналах окажется.
  2. Метод повышения контрастности изображения. Используется в графических редакторах. Можно другие формы нелинейности тоже посмотреть. http://eeweb.poly.edu/~yao/EL5123/lecture3...enhancement.pdf см. Maximum Ratio Combining. Для трех даст ~5 dB выигрыша по ОСШ.
  3. Если яркость точек на картинке зависит от уровня приятого сигнала то можно картинку через S-образную нелинейность прогнать, которая еще больше давит слабый сигнал, не трогает средний и чуть поджимает совсем сильный. Получите повышение контрастности при сохранении общего динамического диапазона. Можно познакомиться с методами повышения контрастности изображений, в которых я не спец.
  4. http://b-ok.org/md5/90149F9F5519139426DB7F26A0B20745
  5. Можете еще Харриса почитать. ИМХО, наиболее понятен. У него еще есть, но под рукой нету. По названию можно найти, кто еще на эту статью ссылается Multirate_Digital_Filters_for_Symbol_Timing_Synchronization_in_Software_Defined_Radios.pdf
  6. Можно ЧМ поиспользовать с модулирующим гармоническим колебанием: Поставить на вход смеситель. Умножать сигнал на нечто вида s(t) = exp(-j*2*pi/Fsam*F*t + 2*pi * F_delta *sin(2*pi/Fsam* F1 * t)) - фактически это ЧМ. F1 - взять как расстояние между гармониками, деленное на порядок нелинейности. На маленьких индексах (F_delta/F1) будете получать одну палку с двумя боковыми после нелинейности. Учтите, что в зависимости от порядка нелинейности (4 или 8) индекс будет увеличиваться в соответствующее число раз. Если индекс побольше, то получите нечто типа Ваших первых тестовых данных (8psk). Расстояние между гармониками будет равно F1*порядок нелинейности. IIR мне показался более перспективным. Может статься, что давить гармоники в фазе гетеродина передатчика по очереди окажется выгоднее. PS Для qpsk Вы похоже почти все уже выжали. Точки если только чутка покруглее можно получить.
  7. Да я не удосужился проверить входной спектр перед тем как в демодулятор совать, поэтому и результат был не очень. На счет гармоники согласен, просто ее влияние не было видно из-за помехи. Теперь пятнышки вытянулись по кругу. Боковые, кстати, другие, не как в случае 8 psk. Отстоят далеко, скорее всего, ФАПЧ их вообще не сможет отработать из-за своей инерционности, они на выход пролезут.
  8. Спектр входного сигнала: Там уши какие-то по бокам. Я их не отфильтровывал Спектр 4-ой гармоники: >10 dB до боковушек Если расфильтроваться маленько, то scatter становится лучше.
  9. Да тут вроде за шумами не видно что PLL сильно носит (4ая гармоника тоже только с двумя маааленькими боковушками) ИМХО, просто шумный qpsk (пятна круглые примерно). Настолько шумный, что улучшение PLL врядли поможет его принять Тут я небольшой спец :( Извините. Посмотрел Вашу статью из первого сообщения - там вроде еще петля прикручена для подавления дополнительного джиттера. Вы ж IIR вариант реализовывали? Посмотрите, на выход основной и корректирующей петли (8ая гармоника для 8psk, это все). Выход PLL можно снова сдвинуть по частоте, чтобы удобнее было анализировать. Убедитесь, что ситуация с джиттером реально улучшается - сравнивайте спектр помехи около 8-ой гармоники частотного сдвига.
  10. Видите, результат демодуляции Вашего приемника лучше чем моя feedforward оценка (за частотой вообще не следил, раз оценил и сдвинул). Это означает, что PLL приемника как-то все-таки отслеживает изменения частоты передатчика. Попробуйте поиграться с настройками PLL приемника, сделав ее чуть менее инерционной (поширокополосней). Если есть срывы PLL в приемнике, то они связаны с тем, что PLL вынуждена отслеживать частоту биений помехи и не успевает за ними. Но лучше сначала все-таки окончательно убедиться (может, в аналоговой части приемника все-таки????), что проблема в передатчике поиспользовав нечто типа векторного анализатора.
  11. Это не так. Символьная скорость примерно равна 9550/32768 частоты дискретизации. Прицепил scatter после передискретизации на эту частоту После оценки и коррекции частотного сдвига без петли (feedforward estimation) masverter, исходя из того, что наблюдается, больше похоже на то, что одна из петель PLL в приемнике или передатчике немного гудит (на вход VCO PLL поступает синусоидальное колебание небольшой (примерно 5/32768 от частоты дискретизации) частоты)
  12. Пусть длина ИХ фильтра IRLen, длина Фурье - Nfft. Вне зависимости от overlap-add/save у Вас в каждой свертке за счет цикличности получается ровно длина IRLen - 1 "плохих" отсчетов, потому что первые отсчеты циклической свертки используют хвост текущего блока вместо хвоста предыдущего. Если длина Фурье равна длине ИХ то получится только один хороший отсчет на блок - последний. В случае overlap-save когда мы считаем циклическую свертку первые IRLen -1 результатов используют последние отсчеты блока и поэтому являются "плохими" и их требуется отбросить на выходе, т.е. каждый раз из Nfft получается Nfft - IRLen+1 полезных отсчетов. Поэтому перекрытие блоков должно быть равно IRLen-1, а длина входного блока - Nfft. В случае overlap-add входные блоки не перекрываются, а дополняются IRlen - 1 отсчетами до длины Фурье. В этом случае в вычислении первых IRLen-1 результатов свертки участвуют 0 и отсчеты блока. Поэтому уже на выходе требуется суммирование и перекрытие. Длина входного блока равна Nfft - IRlen + 1 Собственно оба алгоритма сносно описаны в википедии https://en.wikipedia.org/wiki/Overlap%E2%80%93save_method https://en.wikipedia.org/wiki/Overlap%E2%80%93add_method
  13. Ну да, имхо там все удобством менеджмента памяти и определяется. Ну и еще, если есть возможность FFT ядру сказать, что у него на входе часть данных нулевые, то overlap-add может быть тоже чутка предпочтительнее.
  14. Overlap-save ничем не лучше overlap-add с точки зрения теории. В смысле - и в том и в другом случае получится одинаковая последовательность на выходе. Количество отсчетов в ЧХ полученного фильтра равно длине используемого преобразования Фурье. После обратного преобразования Фурье в общем случае получится столько же отсчетов и в ИХ. А перекрытие у Вас по длине меньше, т.е. условия использования алгоритмов overlap-add/save не выполняются. Капитан очевидность подсказывает, что можно обеспечить требуемую длину ИХ просто сделав c ЧХ следующее преобразование IFFT ->обнуляем все, что вылазит за N1 -> FFT. Если N1 кратно N2 (N2 = k*N1, k - целое) то можно просто занулить каждый k-ый отсчет ЧХ фильтра начиная с k и получим ИХ длины N2.(Это я ступил и погорячился :)) Но в этом случае фильтр станет "не совсем винеровским" и на выходе останется недодавленная помеха, которую могли бы додавить. В результате имеем баланс - искажения вызванные усечением ИХ фильтра vs искажения вызванные наложением при использовании циклической свертки вместо линейной. Что победит - зависит от конкретной ИХ фильтра. Поэтому еще в той теме писал, что все эти алгоритмы шумоподавления отдают "черной магией" Впрочем, вот есть статья о том как хорошо делать подобные свертки _doi_10.1109_2Ficassp.2010.5495161_.pdf
  15. Давайте так: Во временной области: Винеровский фильтр - это линейный фильтр с весами w (строка). Пусть отсчеты входной смеси это вектор х (столбец), выход - вектор у Тогда винеровское решение: y = wx; w = Rxx^-1 * Rxd (1) Rxx - корреляционная матрица входной смеси, Rxd - столбец кросс-корреляции входного и полезного сигнала. Как видно из уравнений, для того, чтобы реализовать винеровский фильтр нужно знать (или как-то рассчитать) кросс-корреляцию полезного сигнала и входной смеси. Ладно, теперь предположим, что матрица Rxx имеет циркулярную структуру (хотя она всего лишь эрмитова). Это равнозначно использованию циркулярной свертки вместо линейной. Тогда: Rxx = F * Sxx * F^(-1); Rxx^(-1) = F^(-1)*Sxx^(-1) * F F - матрица преобразования Фурье. Sxx - диагональная с коэфф. являющимися СПМ входной смеси Если умножить винеровское решение (1) на матрицу преобразования Фурье, то получим: Fw = F*F^(-1) *Sxx^(-1) * F * Rxd Коэф-ты фильтра Винера в частотной области: W = Fw W= Sxx^(-1) * F*Rxd ; W = Sxx^(-1)*Sxd Sxd - преобразование Фурье от вектора кросс-корреляции. Для каждой дискретной частоты i имеем: Y(i) = W(i) * X(i) W(i) = Sxd(i) / Sxx(i); Предполагая, что на входе аддитивная смесь полезного сигнала и помехи получаем W(i) = (Sxx(i) - Sdd(i)) / Sxx(i); Это и есть спектральное вычитание, когда вместо известного кросс-спектра полезного сигнала и входной смеси (как обычно при винеровской фильтрации) используют известную (или полученную каким-либо способом) СПМ помехи. Здесь за кадром осталось наплевательство на фазу и прочие тонкости получения оценок соответствующих СПМ. Вот, все что знал - сказал .
  16. Честно говоря, для меня вообще черная магия как это все работает там. ИХ синтезированного фильтра-шумодава всегда длиннее чем перекрывающаяся часть окон, так что алиасить будет по любому за счет замены линейной свертки на циркулярную и никакой overlap-add от этого избавиться не поможет. Доля энергии этих искажений в полосе сигнала зависит от меняющегося фильтра. Я же только влияние окон на входной спектр описал.
  17. Да нет - на мой взгляд вроде все верно. Наложение окна - процесс сродни гетеродинированию - линейное преобразование, зависящее от сдвига сигнала. В спектральной области получите свертку с оконной функцией, что дает лишние гармоники, как у модуляции. Глубина модуляции будет определяться видом окна - на участках перекрытия - удвоенные хвосты, на неперекрывающихся - собственно отсчеты оконной функции.
  18. С винеровской фильтарцией на практике сталкивался в другом приложении, так что, думаю, могу ответить. Ответ на выделенный вопрос есть в книжке Saeed V. Vaseghi Advanced Digital Signal Processing and Noise Reduction, Second Edition. в параграфе 11.1.3 В методе спектрального вычитания, как его определяет автор, используются мгновенные оценки спектра смеси. В Вашем изводе этого метода используются усредненные по времени оценки СПМ смеси. В винеровском фильтре используются наперед известные СПМ, полученные усреднением по ансамблю. В случае стационарных эргодических процессов и достаточно маленького a Ваш фильтр и будет винеровским.
  19. ТС вроде конкретно про Рида-Маллера первого порядка спрашивал. А он и есть Адамар.
  20. Это тоже самое, что код Адмара. Легко гуглится по словам Walsh-Hadamard code, Hadamard code, Reed-Muller code. Стоящее описание есть в книжке MacWilliams Sloane The Theory of Error-Correcting Codes - там кодам первого порядка посвящена целая глава 14. Если рассматривать программную реализацию для небольших длин (n порядка 1024 или чуть больше), то можно сильно не вдаваться в теорию - кодирование по современной жизни наверное стоит делать по таблице. Декодирование тоже - как прямой перебор и поиск минимума расстояний до всех кодовых слов. В книжке, которую я привел, описан более хитрый способ декодирования, который по вычислительной мощности прокатывал еще в 50х.
  21. О! Еще одна книжка, где автор так и не говорит читателям, что же такое свертка.
  22. От m зависит же. Получите чисто действительный сигнал если (f*m*Ts) = 1/2*n, n - любое целое. Вроде так.
  23. pi/4. Там выше написано. Тут все вокруг синуса-косинуса суммы углов крутится, где второй угол - pi/4
  24. Пусть b = pi/4. Тогда при a0, a1 одинаковым знаком, то что стоит под atan в 7.20: (sin(t) + cos(t))/(cos(t) - sin(t)) = (sin(t)cos( b ) + cos(t)sin( b ))/(cos(t)cos( b ) - sin(t)sin( b )) = sin(t + b )/cos(t+b ) И собственно 7.20 atan(tg(t+b )) - atan( tg( b ) ) = t Для разных знаков a0, a1 - аналогично.
×
×
  • Создать...