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

    

andyp

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о andyp

  • Звание
    Местный

Посетители профиля

2 709 просмотров профиля
  1. Я бы на косяк в модуле (или до него) поставил, если раньше этого не было видно - на выходе явно ж гармошка есть, которой там не должно быть - модуль комплексной экспоненты должен оставаться постоянным как его ни прореживай. Не видно ее могло быть из-за того, что ФНЧ ее отфильтровывал, а с уменьшением фактора прореживания его полоса раздулась, вот он и перестал. Гармоника из модуля может вылезти если например квадратуры брать несинхронно (re и im отсчеты сдвинуты относительно друг друга).
  2. Я когда ПО для BCH делал, плясал от структуры косетов. Для параметров кода n = 2^m - 1 и d - design distance рассчитать ее можно концептуально следующим образом: Есть список от 1 до n. 1. Инициализируем лидера L = 1; 2. В косет записываем все (2*L*I) mod n, I = 1,2,.., пока снова не наткнемся на лидера. Вычеркиваем записанные в косет степени из списка. 3. Находим нового лидера L, как минимальное невычеркнутое целое. Если L >= d, останавливаемся. Все нужные косеты получены. Иначе переходим снова к 2. Например для БЧХ длины 15, для первого косета минимальный полином m_1(x) = (х-a)*(x-a^2)*(x-a^4)*(x-a^8), a - генерирующий элемент поля GF(2^4). Для второго: m_2(x) = (х-a^3)*(x-a^6)*(x-a^12)*(x-a^9) Для остальных - аналогично. Генерирующй полином кода БЧХ (15,5,7) g(x) = m_1(x) * m_2(x)*m_3(x) - произведение минимальных полиномов косетов, включающих степени 1..d-1 генерирующего элемента. Он автоматом получится с коэффициентами 0 и 1. g(х) имеет степень n-k. Генерирующая матрица состоит из строчек со сдвигами g(х). Если нужна проверочная матрица, то алгоритмом Евклида находишь проверочный полином h(x) = (x^n-1)/g(x). Делится без остатка по свойствам циклических кодов, h(x) имеет степень k. Затем его reciprocal: r(X) = (X^k)*h(x^-1). В сущности у reciprocal polynomial те же коэффициенты, что и у h(х), только в обратном порядке. Проверочная матрица формируется как сдвиги reciprocal polynomial. Она же является генерирующей матрицей дуального кода. Для того, чтобы всё это в голове уложилось, мне помогает понимание, что циклический код - идеал в кольце полиномов по модулю (x^n-1), которое является кольцом главных идеалов. Алгебра реально упрощает жизнь. Например, из этого сразу становится интуитивно понятно, что для одной длины БЧХ коды с меньшей исправляющей способностью включают слова кодов с большей. Из хороших книжек по кодированию, которые достаточно алгебраичны и в то же время без лишней алгебры ;), мне нравится Vera Pless, Introduction to the Theory of Error-Correcting Codes.
  3. Для кодов БЧХ длины 15 и кодового расстояния d (designed distance) имеем d-1 строчек проверочной матрицы вида b^i, I = 0..14, b = a^j, j = 1...d-1 вместе с линейно зависимыми, а - генерирующий элемент поля GF(2^4) Косеты поля GF(2^4) по степеням генерирующего элемента 1 2 4 8 3 6 12 9 5 10 7 4 13 11 Для нижней границы числа информационных бит: Для d = 3 имеем две строчки j = 1,2. Один косет лидер. Оставляем одну строчку получаем 15 - 4*1 = 11 инф бит Для d = 5 имеем четыре строчки j = 1,2,3,4. Два косет лидера. Оставляем две строчки и получаем 15 - 4*2 = 7 инф бит Для d = 7 имеем 6 строчек матрицы, три косет лидера. Оставляем 3 строчки и получаем 15 - 4*3 = 3 инф бит Еще раз, это является НИЖНЕЙ границей числа информационных бит (n-k <= m(d-1)/2). В нашем случае n = 2^m - 1= 15, m = 4. Как пишут Лин с Костелло: There is no simple formula for enumerating n-k, but if t is small n-k = mt, t = (d-1)/2. У них же есть пара ссылок про это утверждение, по которым я честно говоря не ходил. Фактически, это означает, что еще какие-то строчки бинарной проверочной матрицы оказались линейно зависимыми. С другой стороны это тоже видно из структуры косетов: Степени минимальных полиномов для косетов равны 4 , 4, 2, 4 - по количеству элементов в каждом косете. Получается, что lcm полиномов трех косетов есть полином 10 степени (5 инф бит)
  4. Это максимальное правдоподобие для binary symmetric channel ;). А Вам на входе декодера "мягкий" демодулятор нужен, оценивающий LLR принятых бит. Но тут с Чейзом никакой разницы нет. У него на входе тоже мягкие решения должны быть.
  5. Если в вычислительной дури не сильно ограничены, то можно декодер максимального правдоподобия реализовать - потребуется вычисление 4096 сверток длиной 24 и выбор максимума. Писать там мало, а работать будет чуть лучше самого хорошего Чейза.
  6. Если интересуетесь более-менее современными подходами к этой проблеме и information theory, то можно почитать Verdu, Spectral Efficiency in the Wideband Regime. Практики там нет, кончено. Но рассуждения интересные имхо. verdu_wideband.pdf
  7. Как насчет почитать то, на что отвечаете? Где там сказано, что использование DSS увеличивает пропускную способность? Я там про достижимую пропускную способность писал и про то, что теорема Шеннона дает нам хинт, как ее достичь в условиях ограниченной излучаемой мощности. И хинт этот - расширять полосу. То, что DSS этого не позволяет, про достижимую пропускную способность не говорит вообще ничего, а говорит лишь про то, что именно эта модуляция не позволяет достичь пропускной способности канала. Все эти *МА в этом контексте вообще не об этом, так как это технологии множественного доступа, как подсказывает капитан очевидность.
  8. Разница есть. В плане достижимой пропускной способности при фиксированной мощности передачи выигрыш таки есть. Достижимая пропускная способность при фиксированной мощности монотонно увеличивается при расширении полосы (ну т.е. в теории выгоднее мощность по полосе размазать) и имеет горизонтальную асимптоту. Всё это получается из теоремы Шеннона. Картинка есть например здесь: https://en.wikipedia.org/wiki/Channel_capacity Собственно это и есть теоретическое обоснование для использования технологий расширения спектра. Скрытность и устойчивость к узкополосным помехам - тоже полезные бонусы.
  9. У нелинейных искажений в дециматорах две причины 1. Заворачивание спектра (folding) 2. Усечение разрядности Со вторым, очевидно, чем меньше усекаете, тем лучше. Что касается первого, то тут все решается дизайном цепочки. Я обычно сначала использую CIC без компенсации. В моих приложениях мне становится недостаточно подавления имиджей до того, как завал АЧХ становится проблемой. CIC иногда разбиваю на два каскада, когда не хочется сильно раздувать разрядность аккумуляторов на высокой частоте дискретизации. При этом получаю немного больше проблем с причиной 2, конечно. После CIC ставлю в зависимости от приложения разные варианты FIR дециматоров. Так как частота дискретизации уже низкая, то можно себе позволить более широкие шины между каскадами и реже усекать разрядность. Точные значения факторов децимации, тип и каскадная структура FIR дециматора определяется требованиями к общему фактору децимации, ширине рабочей полосы и допустимому уровню нелинейных искажений в полосе.
  10. У ошибки округления спектр линейчатый так как сигнал, который округляется, периодический. Тип усечения-округления (варианты round, floor, ceil, это всё) будет влиять только на высоту спуров. Сами спуры всё равно появятся на кратных входному колебанию частотах. Дальше они будут заворачиваться от новой частоты дискретизации от стадии к стадии, что еще разных гармоник даст. Я бы первые стадии в виде пары каскадов CIC с фактором децимации раз в 16-32-64 (в зависимости от требуемой выходной полосы) делал , чтобы не иметь ошибок округления при каждой децимации в 2 раза.
  11. ИМХО Недофильтрованная ошибка округления предыдущего каскада заворачивается в полезную полосу при каждой децимации.
  12. Я про случай различения двух гипотез - два нормальных распределения с одинаковой дисперсией и разными средними (одно из них - 0) и подумал. АМ можно и нужно убить, если есть возможность, выбрав правильную полосу фильтра в детекторе после нелинейности. Т.е. в цепочке ADC-DDC-LPF-ABS-CMP-TIMER еще одного LPF после ABS не хватает имхо. Известную нелинейность можно учесть при формировании порогов. Но это я так. Разумеется, ни на чем не настаиваю.
  13. По уму Вам бы среднее значение сигнала M на вершине импульса оценивать. Для детекции спада использовать порог M-th. th - это порог, который Вы для обнаружения фронта использовали.
  14. Цитата(Grizzzly @ Mar 15 2018, 18:21) С этим утверждением не соглашусь. Да, был не прав. рекурсия выглядит как R_n = l*R_n-1 + X_n. Тогда все сработает.
  15. Цитата(Grizzzly @ Mar 15 2018, 14:08) UPD.: Хм, а ведь при постоянном значении коэффициентов в RLS без экспоненциального затухания lambda = 1 (канал не меняется из-за полосы/времени когерентности, скажем, на 100 отсчетах). Тогда члены (1-l) становятся равны нулю. Не совсем понял, как быть в этом случае. То есть задача сводится вообще к примитивнейшей, поскольку фильтрация должна быть с одинаковыми весами. По идее должно быть вырождение в МНК в этом случае. Так? С l = 1 работать не будет. Оценки корр. функции считаются по следующей формуле R_n = l*R_n-1 + (1-l)*X_n Фактически это экспоненциальное усреднение БИХ фильтром первого порядка. В зависимости от l серединка окна будет браться с большими весами, а к краям окна веса будут спадать. Такая форма получения оценки КФ зашита внутрь RLS и именно она позволяет считать обновления сразу для обратной матрицы.